All functions:
  Elements:
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/test/test-camatch.c:7,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:9,1
    - Dst: ca_match_new_from_strings
      Src: /src/casync/test/test-camatch.c:9,1
    - Dst: STRV_MAKE
      Src: /src/casync/test/test-camatch.c:9,1
    - Dst: ca_match_dump
      Src: /src/casync/test/test-camatch.c:18,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:20,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:22,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:22,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:23,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:24,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:25,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:26,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:28,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:28,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:29,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:30,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:31,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:32,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:34,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:34,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:35,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:36,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:37,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:38,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:40,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:40,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:41,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:42,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:43,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:44,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:46,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:46,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:47,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:48,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:49,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:50,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:52,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:52,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:53,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:54,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:55,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:56,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:58,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:58,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:59,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:60,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:61,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:62,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:64,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:64,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:65,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:66,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:67,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:68,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:70,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:70,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:71,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:72,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:73,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:74,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:76,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:76,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:77,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:78,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:79,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:80,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:82,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:82,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:83,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:84,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:85,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:86,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:88,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:88,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:89,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:90,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:91,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:92,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:94,1
    - Dst: streq
      Src: /src/casync/test/test-camatch.c:94,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:95,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:96,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:97,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:98,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:100,1
    - Dst: ca_match_normalize
      Src: /src/casync/test/test-camatch.c:100,1
    - Dst: ca_match_dump
      Src: /src/casync/test/test-camatch.c:102,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:104,1
    - Dst: ca_match_test
      Src: /src/casync/test/test-camatch.c:104,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:105,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:107,1
    - Dst: ca_match_test
      Src: /src/casync/test/test-camatch.c:107,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:108,1
    - Dst: ca_match_children
      Src: /src/casync/test/test-camatch.c:108,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:109,1
    - Dst: ca_match_equal
      Src: /src/casync/test/test-camatch.c:109,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:110,1
    - Dst: ca_match_equal
      Src: /src/casync/test/test-camatch.c:110,1
    - Dst: ca_match_unref
      Src: /src/casync/test/test-camatch.c:111,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:113,1
    - Dst: ca_match_test
      Src: /src/casync/test/test-camatch.c:113,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:114,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:116,1
    - Dst: ca_match_test
      Src: /src/casync/test/test-camatch.c:116,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:117,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:119,1
    - Dst: ca_match_test
      Src: /src/casync/test/test-camatch.c:119,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:120,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:122,1
    - Dst: ca_match_test
      Src: /src/casync/test/test-camatch.c:122,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:123,1
    - Dst: ca_match_children
      Src: /src/casync/test/test-camatch.c:123,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:124,1
    - Dst: ca_match_equal
      Src: /src/casync/test/test-camatch.c:124,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:125,1
    - Dst: ca_match_equal
      Src: /src/casync/test/test-camatch.c:125,1
    - Dst: ca_match_unref
      Src: /src/casync/test/test-camatch.c:126,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:128,1
    - Dst: ca_match_test
      Src: /src/casync/test/test-camatch.c:128,1
    - Dst: ca_match_dump
      Src: /src/casync/test/test-camatch.c:129,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:130,1
    - Dst: ca_match_children
      Src: /src/casync/test/test-camatch.c:130,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:131,1
    - Dst: ca_match_equal
      Src: /src/casync/test/test-camatch.c:131,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:132,1
    - Dst: ca_match_equal
      Src: /src/casync/test/test-camatch.c:132,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:133,1
    - Dst: ca_match_equal
      Src: /src/casync/test/test-camatch.c:133,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:134,1
    - Dst: ca_match_equal
      Src: /src/casync/test/test-camatch.c:134,1
    - Dst: assert_se
      Src: /src/casync/test/test-camatch.c:135,1
    - Dst: ca_match_equal
      Src: /src/casync/test/test-camatch.c:135,1
    - Dst: ca_match_unref
      Src: /src/casync/test/test-camatch.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 100
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 139
    functionName: main
    functionSourceFile: /src/casync/test/test-camatch.c
    functionUses: 0
    functionsReached:
    - ca_match_dump
    - ca_match_test
    - ca_match_equal
    - STRV_MAKE
    - ca_match_children
    - assert_se
    - ca_match_unref
    - streq
    - ca_match_new_from_strings
    - ca_match_normalize
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/test/test-caindex.c:9,1
    - Dst: fprintf
      Src: /src/casync/test/test-caindex.c:13,1
    - Dst: assert_se
      Src: /src/casync/test/test-caindex.c:17,1
    - Dst: ca_index_new_read
      Src: /src/casync/test/test-caindex.c:17,1
    - Dst: assert_se
      Src: /src/casync/test/test-caindex.c:18,1
    - Dst: ca_index_set_path
      Src: /src/casync/test/test-caindex.c:18,1
    - Dst: assert_se
      Src: /src/casync/test/test-caindex.c:19,1
    - Dst: ca_index_open
      Src: /src/casync/test/test-caindex.c:19,1
    - Dst: ca_index_read_chunk
      Src: /src/casync/test/test-caindex.c:26,1
    - Dst: assert_se
      Src: /src/casync/test/test-caindex.c:27,1
    - Dst: printf
      Src: /src/casync/test/test-caindex.c:32,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/test/test-caindex.c:32,1
    - Dst: printf
      Src: /src/casync/test/test-caindex.c:35,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 37
    functionName: main
    functionSourceFile: /src/casync/test/test-caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_open
    - fprintf
    - ca_index_read_chunk
    - _cleanup_
    - ca_chunk_id_format
    - printf
    - assert_se
    - ca_index_new_read
    - ca_index_set_path
    linkageType: ''
    returnType: int
    signature: int main(int argc, char*argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/test/test-calocation.c:12,1
    - Dst: _cleanup_
      Src: /src/casync/test/test-calocation.c:13,1
    - Dst: _cleanup_
      Src: /src/casync/test/test-calocation.c:14,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:19,1
    - Dst: ca_digest_new
      Src: /src/casync/test/test-calocation.c:19,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:21,1
    - Dst: ca_name_table_new_size
      Src: /src/casync/test/test-calocation.c:21,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:23,1
    - Dst: ca_name_table_add
      Src: /src/casync/test/test-calocation.c:23,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:26,1
    - Dst: ca_name_table_new_size
      Src: /src/casync/test/test-calocation.c:26,1
    - Dst: ca_name_table_ref
      Src: /src/casync/test/test-calocation.c:28,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:29,1
    - Dst: ca_name_table_add
      Src: /src/casync/test/test-calocation.c:29,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:31,1
    - Dst: ca_name_table_add
      Src: /src/casync/test/test-calocation.c:31,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:33,1
    - Dst: ca_name_table_add
      Src: /src/casync/test/test-calocation.c:33,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:36,1
    - Dst: ca_name_table_format
      Src: /src/casync/test/test-calocation.c:36,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:37,1
    - Dst: ca_name_table_parse
      Src: /src/casync/test/test-calocation.c:37,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:38,1
    - Dst: ca_name_table_equal
      Src: /src/casync/test/test-calocation.c:38,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:40,1
    - Dst: ca_location_new
      Src: /src/casync/test/test-calocation.c:40,1
    - Dst: ca_name_table_ref
      Src: /src/casync/test/test-calocation.c:47,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:50,1
    - Dst: ca_location_patch_size
      Src: /src/casync/test/test-calocation.c:50,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:51,1
    - Dst: ca_location_advance
      Src: /src/casync/test/test-calocation.c:51,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:52,1
    - Dst: ca_location_id_make
      Src: /src/casync/test/test-calocation.c:52,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:54,1
    - Dst: ca_location_parse
      Src: /src/casync/test/test-calocation.c:54,1
    - Dst: ca_location_format_full
      Src: /src/casync/test/test-calocation.c:54,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:56,1
    - Dst: ca_location_equal
      Src: /src/casync/test/test-calocation.c:56,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:57,1
    - Dst: ca_location_id_make
      Src: /src/casync/test/test-calocation.c:57,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:58,1
    - Dst: ca_chunk_id_equal
      Src: /src/casync/test/test-calocation.c:58,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:60,1
    - Dst: streq
      Src: /src/casync/test/test-calocation.c:60,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:61,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:62,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:63,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:64,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:65,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:66,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:67,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:68,1
    - Dst: assert_se
      Src: /src/casync/test/test-calocation.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 72
    functionName: main
    functionSourceFile: /src/casync/test/test-calocation.c
    functionUses: 0
    functionsReached:
    - ca_name_table_equal
    - ca_location_new
    - ca_location_advance
    - ca_location_equal
    - ca_name_table_add
    - ca_name_table_new_size
    - ca_digest_new
    - ca_name_table_parse
    - ca_location_patch_size
    - ca_location_parse
    - assert_se
    - ca_location_format_full
    - ca_name_table_format
    - streq
    - ca_name_table_ref
    - ca_chunk_id_equal
    - ca_location_id_make
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/test/test-cachunk.c:10,1
    - Dst: _cleanup_
      Src: /src/casync/test/test-cachunk.c:13,1
    - Dst: assert
      Src: /src/casync/test/test-cachunk.c:16,1
    - Dst: var_tmp_dir
      Src: /src/casync/test/test-cachunk.c:16,1
    - Dst: strjoina
      Src: /src/casync/test/test-cachunk.c:17,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:19,1
    - Dst: dev_urandom
      Src: /src/casync/test/test-cachunk.c:19,1
    - Dst: mkostemp
      Src: /src/casync/test/test-cachunk.c:21,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:22,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:23,1
    - Dst: unlink
      Src: /src/casync/test/test-cachunk.c:23,1
    - Dst: ca_save_and_compress_fd
      Src: /src/casync/test/test-cachunk.c:25,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:26,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:28,1
    - Dst: lseek
      Src: /src/casync/test/test-cachunk.c:28,1
    - Dst: ca_load_and_decompress_fd
      Src: /src/casync/test/test-cachunk.c:30,1
    - Dst: safe_close
      Src: /src/casync/test/test-cachunk.c:31,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:33,1
    - Dst: realloc_buffer_size
      Src: /src/casync/test/test-cachunk.c:33,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:34,1
    - Dst: memcmp
      Src: /src/casync/test/test-cachunk.c:34,1
    - Dst: realloc_buffer_data
      Src: /src/casync/test/test-cachunk.c:34,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/test/test-cachunk.c:36,1
    - Dst: ca_compress
      Src: /src/casync/test/test-cachunk.c:38,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:39,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:41,1
    - Dst: lseek
      Src: /src/casync/test/test-cachunk.c:41,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:42,1
    - Dst: ftruncate
      Src: /src/casync/test/test-cachunk.c:42,1
    - Dst: ca_save_and_decompress_fd
      Src: /src/casync/test/test-cachunk.c:44,1
    - Dst: realloc_buffer_data
      Src: /src/casync/test/test-cachunk.c:44,1
    - Dst: realloc_buffer_size
      Src: /src/casync/test/test-cachunk.c:44,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:45,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/test/test-cachunk.c:47,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:49,1
    - Dst: lseek
      Src: /src/casync/test/test-cachunk.c:49,1
    - Dst: ca_load_and_compress_fd
      Src: /src/casync/test/test-cachunk.c:51,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:52,1
    - Dst: ca_decompress
      Src: /src/casync/test/test-cachunk.c:54,1
    - Dst: realloc_buffer_data
      Src: /src/casync/test/test-cachunk.c:54,1
    - Dst: realloc_buffer_size
      Src: /src/casync/test/test-cachunk.c:54,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:55,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:57,1
    - Dst: realloc_buffer_size
      Src: /src/casync/test/test-cachunk.c:57,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunk.c:58,1
    - Dst: memcmp
      Src: /src/casync/test/test-cachunk.c:58,1
    - Dst: realloc_buffer_data
      Src: /src/casync/test/test-cachunk.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (var_tmp_dir(&d) >= 0)
      pos:
        line_end: 15
        line_start: 15
        source_file: /src/casync/test/test-cachunk.c
    constantsTouched: []
    func_position:
      end: 59
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 59
    functionName: test_chunk_file
    functionSourceFile: /src/casync/test/test-cachunk.c
    functionUses: 0
    functionsReached:
    - lseek
    - unlink
    - realloc_buffer_empty
    - ca_decompress
    - assert_se
    - ca_save_and_compress_fd
    - _cleanup_
    - mkostemp
    - ca_load_and_decompress_fd
    - ca_load_and_compress_fd
    - var_tmp_dir
    - ca_save_and_decompress_fd
    - ftruncate
    - assert
    - strjoina
    - realloc_buffer_data
    - dev_urandom
    - safe_close
    - ca_compress
    - memcmp
    - realloc_buffer_size
    linkageType: ''
    returnType: void
    signature: void test_chunk_file(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_chunk_file
      Src: /src/casync/test/test-cachunk.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: main
    functionSourceFile: /src/casync/test/test-cachunk.c
    functionUses: 0
    functionsReached:
    - test_chunk_file
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:9,1
    - Dst: ca_location_new
      Src: /src/casync/test/test-caorigin.c:9,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:10,1
    - Dst: ca_location_new
      Src: /src/casync/test/test-caorigin.c:10,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:11,1
    - Dst: ca_location_new
      Src: /src/casync/test/test-caorigin.c:11,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:12,1
    - Dst: ca_location_new
      Src: /src/casync/test/test-caorigin.c:12,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:14,1
    - Dst: ca_origin_new
      Src: /src/casync/test/test-caorigin.c:14,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:15,1
    - Dst: ca_origin_put
      Src: /src/casync/test/test-caorigin.c:15,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:16,1
    - Dst: ca_origin_put
      Src: /src/casync/test/test-caorigin.c:16,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:17,1
    - Dst: ca_origin_put
      Src: /src/casync/test/test-caorigin.c:17,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:18,1
    - Dst: ca_origin_put
      Src: /src/casync/test/test-caorigin.c:18,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:20,1
    - Dst: ca_origin_dump
      Src: /src/casync/test/test-caorigin.c:20,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:21,1
    - Dst: ca_origin_advance_bytes
      Src: /src/casync/test/test-caorigin.c:21,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:22,1
    - Dst: ca_origin_dump
      Src: /src/casync/test/test-caorigin.c:22,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:23,1
    - Dst: ca_origin_advance_bytes
      Src: /src/casync/test/test-caorigin.c:23,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:24,1
    - Dst: ca_origin_dump
      Src: /src/casync/test/test-caorigin.c:24,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:25,1
    - Dst: ca_origin_advance_bytes
      Src: /src/casync/test/test-caorigin.c:25,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:26,1
    - Dst: ca_origin_dump
      Src: /src/casync/test/test-caorigin.c:26,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:28,1
    - Dst: ca_origin_concat
      Src: /src/casync/test/test-caorigin.c:28,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:29,1
    - Dst: ca_origin_dump
      Src: /src/casync/test/test-caorigin.c:29,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:31,1
    - Dst: ca_origin_new
      Src: /src/casync/test/test-caorigin.c:31,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:32,1
    - Dst: ca_origin_put
      Src: /src/casync/test/test-caorigin.c:32,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:33,1
    - Dst: ca_origin_put
      Src: /src/casync/test/test-caorigin.c:33,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:34,1
    - Dst: ca_origin_put
      Src: /src/casync/test/test-caorigin.c:34,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:35,1
    - Dst: ca_origin_dump
      Src: /src/casync/test/test-caorigin.c:35,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:37,1
    - Dst: ca_origin_concat
      Src: /src/casync/test/test-caorigin.c:37,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:38,1
    - Dst: ca_origin_dump
      Src: /src/casync/test/test-caorigin.c:38,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:40,1
    - Dst: ca_origin_concat
      Src: /src/casync/test/test-caorigin.c:40,1
    - Dst: assert_se
      Src: /src/casync/test/test-caorigin.c:41,1
    - Dst: ca_origin_dump
      Src: /src/casync/test/test-caorigin.c:41,1
    - Dst: ca_origin_unref
      Src: /src/casync/test/test-caorigin.c:43,1
    - Dst: ca_origin_unref
      Src: /src/casync/test/test-caorigin.c:44,1
    - Dst: ca_location_unref
      Src: /src/casync/test/test-caorigin.c:45,1
    - Dst: ca_location_unref
      Src: /src/casync/test/test-caorigin.c:46,1
    - Dst: ca_location_unref
      Src: /src/casync/test/test-caorigin.c:47,1
    - Dst: ca_location_unref
      Src: /src/casync/test/test-caorigin.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 5
    functionDepth: 1
    functionLinenumber: 5
    functionLinenumberEnd: 51
    functionName: main
    functionSourceFile: /src/casync/test/test-caorigin.c
    functionUses: 0
    functionsReached:
    - ca_location_new
    - ca_origin_dump
    - ca_origin_advance_bytes
    - ca_origin_put
    - assert_se
    - ca_origin_unref
    - ca_origin_new
    - ca_origin_concat
    - ca_location_unref
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/test/test-cachunker.c:25,1
    - Dst: ca_chunker_start
      Src: /src/casync/test/test-cachunker.c:26,1
    - Dst: ca_chunker_roll
      Src: /src/casync/test/test-cachunker.c:32,1
    - Dst: ca_chunker_start
      Src: /src/casync/test/test-cachunker.c:33,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (sizeof(buffer) > CA_CHUNKER_WINDOW_SIZE)
      pos:
        line_end: 24
        line_start: 24
        source_file: /src/casync/test/test-cachunker.c
    constantsTouched: []
    func_position:
      end: 41
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 41
    functionName: test_rolling
    functionSourceFile: /src/casync/test/test-cachunker.c
    functionUses: 0
    functionsReached:
    - ca_chunker_start
    - assert
    - assert_se
    - ca_chunker_roll
    linkageType: ''
    returnType: void
    signature: void test_rolling(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/casync/test/test-cachunker.c:50,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:51,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:57,1
    - Dst: read
      Src: /src/casync/test/test-cachunker.c:57,1
    - Dst: ca_chunker_scan
      Src: /src/casync/test/test-cachunker.c:65,1
    - Dst: printf
      Src: /src/casync/test/test-cachunker.c:72,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:74,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:75,1
    - Dst: close
      Src: /src/casync/test/test-cachunker.c:89,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 90
    functionName: test_chunk
    functionSourceFile: /src/casync/test/test-cachunker.c
    functionUses: 0
    functionsReached:
    - ca_chunker_scan
    - printf
    - assert_se
    - read
    - close
    - open
    linkageType: ''
    returnType: void
    signature: void test_chunk(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunker_set_size
      Src: /src/casync/test/test-cachunker.c:95,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:96,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:97,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:98,1
    - Dst: ca_chunker_set_size
      Src: /src/casync/test/test-cachunker.c:101,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:102,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:103,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:104,1
    - Dst: ca_chunker_set_size
      Src: /src/casync/test/test-cachunker.c:107,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:108,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:109,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:110,1
    - Dst: ca_chunker_set_size
      Src: /src/casync/test/test-cachunker.c:113,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:114,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:115,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:116,1
    - Dst: ca_chunker_set_size
      Src: /src/casync/test/test-cachunker.c:119,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:120,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:121,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:122,1
    - Dst: ca_chunker_set_size
      Src: /src/casync/test/test-cachunker.c:125,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:126,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:127,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:128,1
    - Dst: ca_chunker_set_size
      Src: /src/casync/test/test-cachunker.c:131,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:132,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:133,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:134,1
    - Dst: ca_chunker_set_size
      Src: /src/casync/test/test-cachunker.c:137,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:138,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:139,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 143
    functionName: test_set_size
    functionSourceFile: /src/casync/test/test-cachunker.c
    functionUses: 0
    functionsReached:
    - assert_se
    - ca_chunker_set_size
    linkageType: ''
    returnType: int
    signature: int test_set_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_rolling
      Src: /src/casync/test/test-cachunker.c:147,1
    - Dst: test_chunk
      Src: /src/casync/test/test-cachunker.c:148,1
    - Dst: test_set_size
      Src: /src/casync/test/test-cachunker.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 152
    functionName: main
    functionSourceFile: /src/casync/test/test-cachunker.c
    functionUses: 0
    functionsReached:
    - test_set_size
    - test_chunk
    - test_rolling
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/test/test-caencoder.c:21,1
    - Dst: assert
      Src: /src/casync/test/test-caencoder.c:22,1
    - Dst: printf
      Src: /src/casync/test/test-caencoder.c:24,1
    - Dst: ca_encoder_new
      Src: /src/casync/test/test-caencoder.c:26,1
    - Dst: ca_encoder_set_base_fd
      Src: /src/casync/test/test-caencoder.c:32,1
    - Dst: geteuid
      Src: /src/casync/test/test-caencoder.c:38,1
    - Dst: ca_encoder_set_feature_flags
      Src: /src/casync/test/test-caencoder.c:41,1
    - Dst: ca_encoder_step
      Src: /src/casync/test/test-caencoder.c:49,1
    - Dst: ca_encoder_current_path
      Src: /src/casync/test/test-caencoder.c:66,1
    - Dst: ca_encoder_current_mode
      Src: /src/casync/test/test-caencoder.c:70,1
    - Dst: printf
      Src: /src/casync/test/test-caencoder.c:74,1
    - Dst: free
      Src: /src/casync/test/test-caencoder.c:75,1
    - Dst: ca_encoder_get_data
      Src: /src/casync/test/test-caencoder.c:86,1
    - Dst: write
      Src: /src/casync/test/test-caencoder.c:92,1
    - Dst: assert
      Src: /src/casync/test/test-caencoder.c:102,1
    - Dst: ca_encoder_current_archive_offset
      Src: /src/casync/test/test-caencoder.c:112,1
    - Dst: lseek
      Src: /src/casync/test/test-caencoder.c:116,1
    - Dst: ca_encoder_unref
      Src: /src/casync/test/test-caencoder.c:128,1
    - Dst: close
      Src: /src/casync/test/test-caencoder.c:131,1
    - Dst: close
      Src: /src/casync/test/test-caencoder.c:134,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 92
    argCount: 2
    argNames:
    - dfd
    - fd
    argTypes:
    - int
    - int
    assertStmts:
    - condition: (false)
      pos:
        line_end: 101
        line_start: 101
        source_file: /src/casync/test/test-caencoder.c
    - condition: (dfd >= 0)
      pos:
        line_end: 20
        line_start: 20
        source_file: /src/casync/test/test-caencoder.c
    - condition: (fd >= 0)
      pos:
        line_end: 21
        line_start: 21
        source_file: /src/casync/test/test-caencoder.c
    constantsTouched: []
    func_position:
      end: 137
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 137
    functionName: encode
    functionSourceFile: /src/casync/test/test-caencoder.c
    functionUses: 0
    functionsReached:
    - ca_encoder_set_feature_flags
    - lseek
    - ca_encoder_current_archive_offset
    - ca_encoder_step
    - ca_encoder_get_data
    - ca_encoder_current_mode
    - ca_encoder_current_path
    - ca_encoder_new
    - printf
    - ca_encoder_unref
    - geteuid
    - ca_encoder_set_base_fd
    - write
    - assert
    - close
    - free
    linkageType: ''
    returnType: int
    signature: int encode(int dfd, int fd)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/test/test-caencoder.c:143,1
    - Dst: printf
      Src: /src/casync/test/test-caencoder.c:145,1
    - Dst: ca_decoder_new
      Src: /src/casync/test/test-caencoder.c:147,1
    - Dst: ca_decoder_set_base_mode
      Src: /src/casync/test/test-caencoder.c:153,1
    - Dst: ca_decoder_step
      Src: /src/casync/test/test-caencoder.c:160,1
    - Dst: read
      Src: /src/casync/test/test-caencoder.c:177,1
    - Dst: ca_decoder_put_eof
      Src: /src/casync/test/test-caencoder.c:183,1
    - Dst: ca_decoder_put_data
      Src: /src/casync/test/test-caencoder.c:185,1
    - Dst: ca_decoder_current_mode
      Src: /src/casync/test/test-caencoder.c:197,1
    - Dst: ca_decoder_current_path
      Src: /src/casync/test/test-caencoder.c:201,1
    - Dst: printf
      Src: /src/casync/test/test-caencoder.c:205,1
    - Dst: free
      Src: /src/casync/test/test-caencoder.c:206,1
    - Dst: ca_decoder_unref
      Src: /src/casync/test/test-caencoder.c:218,1
    - Dst: close
      Src: /src/casync/test/test-caencoder.c:221,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 64
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 142
        line_start: 142
        source_file: /src/casync/test/test-caencoder.c
    constantsTouched: []
    func_position:
      end: 224
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 224
    functionName: decode
    functionSourceFile: /src/casync/test/test-caencoder.c
    functionUses: 0
    functionsReached:
    - ca_decoder_current_mode
    - ca_decoder_unref
    - ca_decoder_new
    - ca_decoder_current_path
    - printf
    - ca_decoder_set_base_mode
    - ca_decoder_step
    - read
    - ca_decoder_put_data
    - assert
    - close
    - ca_decoder_put_eof
    - free
    linkageType: ''
    returnType: int
    signature: int decode(int fd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/test/test-caencoder.c:232,1
    - Dst: var_tmp_dir
      Src: /src/casync/test/test-caencoder.c:232,1
    - Dst: strjoina
      Src: /src/casync/test/test-caencoder.c:233,1
    - Dst: open
      Src: /src/casync/test/test-caencoder.c:235,1
    - Dst: mkostemp
      Src: /src/casync/test/test-caencoder.c:241,1
    - Dst: log_error
      Src: /src/casync/test/test-caencoder.c:249,1
    - Dst: encode
      Src: /src/casync/test/test-caencoder.c:251,1
    - Dst: open
      Src: /src/casync/test/test-caencoder.c:256,1
    - Dst: decode
      Src: /src/casync/test/test-caencoder.c:262,1
    - Dst: log_error
      Src: /src/casync/test/test-caencoder.c:266,1
    - Dst: close
      Src: /src/casync/test/test-caencoder.c:269,1
    - Dst: close
      Src: /src/casync/test/test-caencoder.c:272,1
    - Dst: assert_se
      Src: /src/casync/test/test-caencoder.c:275,1
    - Dst: unlink
      Src: /src/casync/test/test-caencoder.c:275,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (var_tmp_dir(&d) >= 0)
      pos:
        line_end: 231
        line_start: 231
        source_file: /src/casync/test/test-caencoder.c
    constantsTouched: []
    func_position:
      end: 278
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 278
    functionName: main
    functionSourceFile: /src/casync/test/test-caencoder.c
    functionUses: 0
    functionsReached:
    - mkostemp
    - strjoina
    - unlink
    - close
    - var_tmp_dir
    - log_error
    - encode
    - assert_se
    - assert
    - decode
    - open
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: exit_signal_handler
    functionSourceFile: /src/casync/test/notify-wait.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void exit_signal_handler(int signo)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/casync/test/notify-wait.c:37,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:52,1
    - Dst: socket
      Src: /src/casync/test/notify-wait.c:56,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:59,1
    - Dst: bind
      Src: /src/casync/test/notify-wait.c:64,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:66,1
    - Dst: getsockname
      Src: /src/casync/test/notify-wait.c:70,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:72,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:76,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:77,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:78,1
    - Dst: newa
      Src: /src/casync/test/notify-wait.c:80,1
    - Dst: memcpy
      Src: /src/casync/test/notify-wait.c:82,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:85,1
    - Dst: sigemptyset
      Src: /src/casync/test/notify-wait.c:85,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:86,1
    - Dst: sigaddset
      Src: /src/casync/test/notify-wait.c:86,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:87,1
    - Dst: sigaddset
      Src: /src/casync/test/notify-wait.c:87,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:88,1
    - Dst: sigaddset
      Src: /src/casync/test/notify-wait.c:88,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:90,1
    - Dst: sigprocmask
      Src: /src/casync/test/notify-wait.c:90,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:91,1
    - Dst: sigdelset
      Src: /src/casync/test/notify-wait.c:91,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:92,1
    - Dst: sigdelset
      Src: /src/casync/test/notify-wait.c:92,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:93,1
    - Dst: sigdelset
      Src: /src/casync/test/notify-wait.c:93,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:95,1
    - Dst: sigaction
      Src: /src/casync/test/notify-wait.c:95,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:96,1
    - Dst: sigaction
      Src: /src/casync/test/notify-wait.c:96,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:98,1
    - Dst: sigaction
      Src: /src/casync/test/notify-wait.c:98,1
    - Dst: now
      Src: /src/casync/test/notify-wait.c:100,1
    - Dst: fork
      Src: /src/casync/test/notify-wait.c:102,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:105,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:112,1
    - Dst: sigprocmask
      Src: /src/casync/test/notify-wait.c:112,1
    - Dst: safe_close
      Src: /src/casync/test/notify-wait.c:114,1
    - Dst: open
      Src: /src/casync/test/notify-wait.c:117,1
    - Dst: open
      Src: /src/casync/test/notify-wait.c:122,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:124,1
    - Dst: dup2
      Src: /src/casync/test/notify-wait.c:131,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:133,1
    - Dst: safe_close
      Src: /src/casync/test/notify-wait.c:137,1
    - Dst: setenv
      Src: /src/casync/test/notify-wait.c:140,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:142,1
    - Dst: execv
      Src: /src/casync/test/notify-wait.c:146,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:148,1
    - Dst: _exit
      Src: /src/casync/test/notify-wait.c:151,1
    - Dst: waitid
      Src: /src/casync/test/notify-wait.c:165,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:167,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:176,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:183,1
    - Dst: strsignal
      Src: /src/casync/test/notify-wait.c:183,1
    - Dst: assert_se
      Src: /src/casync/test/notify-wait.c:189,1
    - Dst: free
      Src: /src/casync/test/notify-wait.c:197,1
    - Dst: log_oom
      Src: /src/casync/test/notify-wait.c:201,1
    - Dst: recv
      Src: /src/casync/test/notify-wait.c:208,1
    - Dst: log_error_errno
      Src: /src/casync/test/notify-wait.c:213,1
    - Dst: recv
      Src: /src/casync/test/notify-wait.c:223,1
    - Dst: log_error_errno
      Src: /src/casync/test/notify-wait.c:225,1
    - Dst: log_error_errno
      Src: /src/casync/test/notify-wait.c:230,1
    - Dst: strlen
      Src: /src/casync/test/notify-wait.c:240,1
    - Dst: startswith
      Src: /src/casync/test/notify-wait.c:243,1
    - Dst: memmem
      Src: /src/casync/test/notify-wait.c:245,1
    - Dst: strlen
      Src: /src/casync/test/notify-wait.c:245,1
    - Dst: strlen
      Src: /src/casync/test/notify-wait.c:249,1
    - Dst: printf
      Src: /src/casync/test/notify-wait.c:254,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:262,1
    - Dst: now
      Src: /src/casync/test/notify-wait.c:266,1
    - Dst: nsec_to_timespec
      Src: /src/casync/test/notify-wait.c:267,1
    - Dst: ppoll
      Src: /src/casync/test/notify-wait.c:269,1
    - Dst: log_error_errno
      Src: /src/casync/test/notify-wait.c:274,1
    - Dst: log_error
      Src: /src/casync/test/notify-wait.c:279,1
    - Dst: kill
      Src: /src/casync/test/notify-wait.c:289,1
    - Dst: free
      Src: /src/casync/test/notify-wait.c:291,1
    - Dst: safe_close
      Src: /src/casync/test/notify-wait.c:292,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 197
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 295
    functionName: main
    functionSourceFile: /src/casync/test/notify-wait.c
    functionUses: 0
    functionsReached:
    - _exit
    - bind
    - sigprocmask
    - log_error_errno
    - assert_se
    - sigemptyset
    - fork
    - newa
    - open
    - free
    - memcpy
    - now
    - memmem
    - log_oom
    - setenv
    - socket
    - sigdelset
    - recv
    - printf
    - strsignal
    - execv
    - sigaction
    - kill
    - waitid
    - sigaddset
    - ppoll
    - safe_close
    - nsec_to_timespec
    - startswith
    - strlen
    - dup2
    - getsockname
    - log_error
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srand
      Src: /src/casync/test/test-cadigest.c:17,1
    - Dst: ELEMENTSOF
      Src: /src/casync/test/test-cadigest.c:18,1
    - Dst: rand
      Src: /src/casync/test/test-cadigest.c:19,1
    - Dst: assert_se
      Src: /src/casync/test/test-cadigest.c:21,1
    - Dst: ca_digest_new
      Src: /src/casync/test/test-cadigest.c:21,1
    - Dst: now
      Src: /src/casync/test/test-cadigest.c:23,1
    - Dst: now
      Src: /src/casync/test/test-cadigest.c:25,1
    - Dst: ca_digest_write
      Src: /src/casync/test/test-cadigest.c:26,1
    - Dst: printf
      Src: /src/casync/test/test-cadigest.c:30,1
    - Dst: ca_digest_type_to_string
      Src: /src/casync/test/test-cadigest.c:30,1
    - Dst: ca_digest_free
      Src: /src/casync/test/test-cadigest.c:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - t
    argTypes:
    - CaDigestType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 33
    functionName: test_speed
    functionSourceFile: /src/casync/test/test-cadigest.c
    functionUses: 0
    functionsReached:
    - ca_digest_write
    - ca_digest_free
    - srand
    - ELEMENTSOF
    - ca_digest_new
    - now
    - printf
    - assert_se
    - ca_digest_type_to_string
    - rand
    linkageType: ''
    returnType: void
    signature: void test_speed(CaDigestType t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/test/test-cadigest.c:39,1
    - Dst: ca_digest_new
      Src: /src/casync/test/test-cadigest.c:39,1
    - Dst: assert_se
      Src: /src/casync/test/test-cadigest.c:41,1
    - Dst: memcmp
      Src: /src/casync/test/test-cadigest.c:41,1
    - Dst: ca_digest_read
      Src: /src/casync/test/test-cadigest.c:41,1
    - Dst: ca_digest_reset
      Src: /src/casync/test/test-cadigest.c:47,1
    - Dst: ca_digest_write
      Src: /src/casync/test/test-cadigest.c:48,1
    - Dst: assert_se
      Src: /src/casync/test/test-cadigest.c:50,1
    - Dst: memcmp
      Src: /src/casync/test/test-cadigest.c:50,1
    - Dst: ca_digest_read
      Src: /src/casync/test/test-cadigest.c:50,1
    - Dst: ca_digest_reset
      Src: /src/casync/test/test-cadigest.c:57,1
    - Dst: ca_digest_write
      Src: /src/casync/test/test-cadigest.c:59,1
    - Dst: ca_digest_write
      Src: /src/casync/test/test-cadigest.c:60,1
    - Dst: assert_se
      Src: /src/casync/test/test-cadigest.c:62,1
    - Dst: memcmp
      Src: /src/casync/test/test-cadigest.c:62,1
    - Dst: ca_digest_read
      Src: /src/casync/test/test-cadigest.c:62,1
    - Dst: ca_digest_free
      Src: /src/casync/test/test-cadigest.c:68,1
    - Dst: assert_se
      Src: /src/casync/test/test-cadigest.c:70,1
    - Dst: ca_digest_new
      Src: /src/casync/test/test-cadigest.c:70,1
    - Dst: assert_se
      Src: /src/casync/test/test-cadigest.c:72,1
    - Dst: memcmp
      Src: /src/casync/test/test-cadigest.c:72,1
    - Dst: ca_digest_read
      Src: /src/casync/test/test-cadigest.c:72,1
    - Dst: ca_digest_reset
      Src: /src/casync/test/test-cadigest.c:78,1
    - Dst: ca_digest_write
      Src: /src/casync/test/test-cadigest.c:79,1
    - Dst: assert_se
      Src: /src/casync/test/test-cadigest.c:81,1
    - Dst: memcmp
      Src: /src/casync/test/test-cadigest.c:81,1
    - Dst: ca_digest_read
      Src: /src/casync/test/test-cadigest.c:81,1
    - Dst: ca_digest_reset
      Src: /src/casync/test/test-cadigest.c:87,1
    - Dst: ca_digest_write
      Src: /src/casync/test/test-cadigest.c:89,1
    - Dst: ca_digest_write
      Src: /src/casync/test/test-cadigest.c:90,1
    - Dst: assert_se
      Src: /src/casync/test/test-cadigest.c:92,1
    - Dst: memcmp
      Src: /src/casync/test/test-cadigest.c:92,1
    - Dst: ca_digest_read
      Src: /src/casync/test/test-cadigest.c:92,1
    - Dst: ca_digest_free
      Src: /src/casync/test/test-cadigest.c:98,1
    - Dst: test_speed
      Src: /src/casync/test/test-cadigest.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 104
    functionName: main
    functionSourceFile: /src/casync/test/test-cadigest.c
    functionUses: 0
    functionsReached:
    - ca_digest_write
    - ca_digest_new
    - ca_digest_read
    - assert_se
    - memcmp
    - test_speed
    - ca_digest_free
    - ca_digest_reset
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:21,1
    - Dst: tmp_dir
      Src: /src/casync/test/test-util.c:21,1
    - Dst: strjoina
      Src: /src/casync/test/test-util.c:22,1
    - Dst: memzero
      Src: /src/casync/test/test-util.c:24,1
    - Dst: dev_urandom
      Src: /src/casync/test/test-util.c:25,1
    - Dst: memzero
      Src: /src/casync/test/test-util.c:26,1
    - Dst: dev_urandom
      Src: /src/casync/test/test-util.c:27,1
    - Dst: memzero
      Src: /src/casync/test/test-util.c:28,1
    - Dst: mkostemp
      Src: /src/casync/test/test-util.c:30,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:31,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:32,1
    - Dst: unlink
      Src: /src/casync/test/test-util.c:32,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:34,1
    - Dst: loop_write_with_holes
      Src: /src/casync/test/test-util.c:34,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:35,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:37,1
    - Dst: lseek
      Src: /src/casync/test/test-util.c:37,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:38,1
    - Dst: loop_read
      Src: /src/casync/test/test-util.c:38,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:39,1
    - Dst: memcmp
      Src: /src/casync/test/test-util.c:39,1
    - Dst: memzero
      Src: /src/casync/test/test-util.c:41,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:42,1
    - Dst: lseek
      Src: /src/casync/test/test-util.c:42,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:43,1
    - Dst: loop_write_with_holes
      Src: /src/casync/test/test-util.c:43,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:45,1
    - Dst: lseek
      Src: /src/casync/test/test-util.c:45,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:46,1
    - Dst: loop_read
      Src: /src/casync/test/test-util.c:46,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:47,1
    - Dst: memcmp
      Src: /src/casync/test/test-util.c:47,1
    - Dst: safe_close
      Src: /src/casync/test/test-util.c:49,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:51,1
    - Dst: pipe2
      Src: /src/casync/test/test-util.c:51,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:53,1
    - Dst: loop_write_with_holes
      Src: /src/casync/test/test-util.c:53,1
    - Dst: MIN
      Src: /src/casync/test/test-util.c:53,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:54,1
    - Dst: safe_close
      Src: /src/casync/test/test-util.c:56,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:58,1
    - Dst: loop_read
      Src: /src/casync/test/test-util.c:58,1
    - Dst: MIN
      Src: /src/casync/test/test-util.c:58,1
    - Dst: safe_close
      Src: /src/casync/test/test-util.c:60,1
    - Dst: assert_se
      Src: /src/casync/test/test-util.c:62,1
    - Dst: memcmp
      Src: /src/casync/test/test-util.c:62,1
    - Dst: MIN
      Src: /src/casync/test/test-util.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 65
    functionName: main
    functionSourceFile: /src/casync/test/test-util.c
    functionUses: 0
    functionsReached:
    - mkostemp
    - strjoina
    - lseek
    - pipe2
    - unlink
    - safe_close
    - MIN
    - tmp_dir
    - memcmp
    - assert_se
    - dev_urandom
    - memzero
    - loop_read
    - loop_write_with_holes
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:8,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:8,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:9,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:9,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:10,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:10,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:11,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:11,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:13,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:13,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:14,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:14,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:15,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:15,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:16,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:16,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:18,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:18,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:19,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:19,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:20,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:20,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:21,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:21,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:22,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:22,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:23,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:23,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:25,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:25,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:26,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:26,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:28,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:28,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:29,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:29,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:30,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:30,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:32,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:32,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:33,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:33,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:34,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 35
    functionName: test_locator_has_suffix
    functionSourceFile: /src/casync/test/test-cautil.c
    functionUses: 0
    functionsReached:
    - ca_locator_has_suffix
    - assert_se
    linkageType: ''
    returnType: void
    signature: void test_locator_has_suffix(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_strip_file_url
      Src: /src/casync/test/test-cautil.c:40,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:41,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:43,1
    - Dst: streq
      Src: /src/casync/test/test-cautil.c:43,1
    - Dst: free
      Src: /src/casync/test/test-cautil.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 46
    functionName: test_strip_file_url_one
    functionSourceFile: /src/casync/test/test-cautil.c
    functionUses: 0
    functionsReached:
    - streq
    - ca_strip_file_url
    - assert_se
    - free
    linkageType: ''
    returnType: void
    signature: void test_strip_file_url_one(const char *a, const char *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_strip_file_url_one
      Src: /src/casync/test/test-cautil.c:50,1
    - Dst: test_strip_file_url_one
      Src: /src/casync/test/test-cautil.c:51,1
    - Dst: test_strip_file_url_one
      Src: /src/casync/test/test-cautil.c:52,1
    - Dst: test_strip_file_url_one
      Src: /src/casync/test/test-cautil.c:53,1
    - Dst: test_strip_file_url_one
      Src: /src/casync/test/test-cautil.c:54,1
    - Dst: test_strip_file_url_one
      Src: /src/casync/test/test-cautil.c:55,1
    - Dst: test_strip_file_url_one
      Src: /src/casync/test/test-cautil.c:57,1
    - Dst: test_strip_file_url_one
      Src: /src/casync/test/test-cautil.c:59,1
    - Dst: test_strip_file_url_one
      Src: /src/casync/test/test-cautil.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 61
    functionName: test_strip_file_url
    functionSourceFile: /src/casync/test/test-cautil.c
    functionUses: 0
    functionsReached:
    - test_strip_file_url_one
    linkageType: ''
    returnType: void
    signature: void test_strip_file_url(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:64,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:64,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:65,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:65,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:66,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:66,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:67,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:67,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:68,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:68,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:69,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:69,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:70,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:70,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:71,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:71,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:72,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:72,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:73,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:73,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:74,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:74,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:75,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:75,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:76,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:76,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:77,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:77,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:78,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:78,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:79,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:79,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:80,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:80,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:81,1
    - Dst: ca_classify_locator
      Src: /src/casync/test/test-cautil.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 82
    functionName: test_classify_locator
    functionSourceFile: /src/casync/test/test-cautil.c
    functionUses: 0
    functionsReached:
    - assert_se
    - ca_classify_locator
    linkageType: ''
    returnType: void
    signature: void test_classify_locator(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:87,1
    - Dst: ca_locator_patch_last_component
      Src: /src/casync/test/test-cautil.c:87,1
    - Dst: assert_se
      Src: /src/casync/test/test-cautil.c:90,1
    - Dst: streq
      Src: /src/casync/test/test-cautil.c:90,1
    - Dst: free
      Src: /src/casync/test/test-cautil.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - old
    - last_component
    - code
    - result
    argTypes:
    - char*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 93
    functionName: test_locator_patch_last_component_one
    functionSourceFile: /src/casync/test/test-cautil.c
    functionUses: 0
    functionsReached:
    - streq
    - assert_se
    - ca_locator_patch_last_component
    - free
    linkageType: ''
    returnType: void
    signature: void test_locator_patch_last_component_one(const char *old, const char
      *last_component, int code, const char *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:97,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:99,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:100,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:101,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:102,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:103,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:104,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:106,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:107,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:108,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:109,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:111,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:112,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:113,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:114,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:115,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:116,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:117,1
    - Dst: test_locator_patch_last_component_one
      Src: /src/casync/test/test-cautil.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 120
    functionName: test_locator_patch_last_component
    functionSourceFile: /src/casync/test/test-cautil.c
    functionUses: 0
    functionsReached:
    - test_locator_patch_last_component_one
    linkageType: ''
    returnType: void
    signature: void test_locator_patch_last_component(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_locator_has_suffix
      Src: /src/casync/test/test-cautil.c:124,1
    - Dst: test_strip_file_url
      Src: /src/casync/test/test-cautil.c:125,1
    - Dst: test_classify_locator
      Src: /src/casync/test/test-cautil.c:126,1
    - Dst: test_locator_patch_last_component
      Src: /src/casync/test/test-cautil.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 130
    functionName: main
    functionSourceFile: /src/casync/test/test-cautil.c
    functionUses: 0
    functionsReached:
    - test_classify_locator
    - test_strip_file_url
    - test_locator_patch_last_component
    - test_locator_has_suffix
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: now
      Src: /src/casync/test/test-cachunker-histogram.c:34,1
    - Dst: read
      Src: /src/casync/test/test-cachunker-histogram.c:37,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker-histogram.c:38,1
    - Dst: ca_chunker_scan
      Src: /src/casync/test/test-cachunker-histogram.c:44,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker-histogram.c:50,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker-histogram.c:52,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker-histogram.c:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - q
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 64
    functionName: process
    functionSourceFile: /src/casync/test/test-cachunker-histogram.c
    functionUses: 0
    functionsReached:
    - now
    - assert_se
    - ca_chunker_scan
    - read
    linkageType: ''
    returnType: void
    signature: void * process(void *q)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/casync/test/test-cachunker-histogram.c:86,1
    - Dst: putchar
      Src: /src/casync/test/test-cachunker-histogram.c:89,1
    - Dst: putchar
      Src: /src/casync/test/test-cachunker-histogram.c:91,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - histogram
    - n
    argTypes:
    - unsigned*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 93
    functionName: draw
    functionSourceFile: /src/casync/test/test-cachunker-histogram.c
    functionUses: 0
    functionsReached:
    - putchar
    - printf
    linkageType: ''
    returnType: void
    signature: void draw(unsigned *histogram, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunker_set_size
      Src: /src/casync/test/test-cachunker-histogram.c:103,1
    - Dst: new0
      Src: /src/casync/test/test-cachunker-histogram.c:105,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker-histogram.c:106,1
    - Dst: log_info
      Src: /src/casync/test/test-cachunker-histogram.c:108,1
    - Dst: open
      Src: /src/casync/test/test-cachunker-histogram.c:114,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker-histogram.c:115,1
    - Dst: now
      Src: /src/casync/test/test-cachunker-histogram.c:117,1
    - Dst: new0
      Src: /src/casync/test/test-cachunker-histogram.c:122,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker-histogram.c:123,1
    - Dst: pthread_create
      Src: /src/casync/test/test-cachunker-histogram.c:128,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker-histogram.c:129,1
    - Dst: pthread_join
      Src: /src/casync/test/test-cachunker-histogram.c:135,1
    - Dst: assert_se
      Src: /src/casync/test/test-cachunker-histogram.c:136,1
    - Dst: free
      Src: /src/casync/test/test-cachunker-histogram.c:145,1
    - Dst: log_info
      Src: /src/casync/test/test-cachunker-histogram.c:148,1
    - Dst: log_info
      Src: /src/casync/test/test-cachunker-histogram.c:149,1
    - Dst: draw
      Src: /src/casync/test/test-cachunker-histogram.c:153,1
    - Dst: free
      Src: /src/casync/test/test-cachunker-histogram.c:155,1
    - Dst: safe_close
      Src: /src/casync/test/test-cachunker-histogram.c:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 2
    argNames:
    - pick
    - ret_avg
    argTypes:
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 159
    functionName: run
    functionSourceFile: /src/casync/test/test-cachunker-histogram.c
    functionUses: 0
    functionsReached:
    - pthread_join
    - safe_close
    - now
    - draw
    - new0
    - free
    - assert_se
    - pthread_create
    - log_info
    - ca_chunker_set_size
    - open
    linkageType: ''
    returnType: void
    signature: void run(size_t pick, size_t *ret_avg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: run
      Src: /src/casync/test/test-cachunker-histogram.c:179,1
    - Dst: printf
      Src: /src/casync/test/test-cachunker-histogram.c:183,1
    - Dst: log_error
      Src: /src/casync/test/test-cachunker-histogram.c:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 188
    functionName: main
    functionSourceFile: /src/casync/test/test-cachunker-histogram.c
    functionUses: 0
    functionsReached:
    - log_error
    - printf
    - run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/test/test-casync.c:20,1
    - Dst: var_tmp_dir
      Src: /src/casync/test/test-casync.c:20,1
    - Dst: asprintf
      Src: /src/casync/test/test-casync.c:22,1
    - Dst: random_u64
      Src: /src/casync/test/test-casync.c:22,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:23,1
    - Dst: asprintf
      Src: /src/casync/test/test-casync.c:24,1
    - Dst: random_u64
      Src: /src/casync/test/test-casync.c:24,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:25,1
    - Dst: asprintf
      Src: /src/casync/test/test-casync.c:26,1
    - Dst: random_u64
      Src: /src/casync/test/test-casync.c:26,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:27,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:29,1
    - Dst: ca_sync_new_encode
      Src: /src/casync/test/test-casync.c:29,1
    - Dst: geteuid
      Src: /src/casync/test/test-casync.c:33,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:36,1
    - Dst: ca_sync_set_feature_flags
      Src: /src/casync/test/test-casync.c:36,1
    - Dst: open
      Src: /src/casync/test/test-casync.c:38,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:39,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:40,1
    - Dst: ca_sync_set_base_fd
      Src: /src/casync/test/test-casync.c:40,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:42,1
    - Dst: ca_sync_enable_archive_digest
      Src: /src/casync/test/test-casync.c:42,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:43,1
    - Dst: ca_sync_set_store_path
      Src: /src/casync/test/test-casync.c:43,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:44,1
    - Dst: ca_sync_set_index_path
      Src: /src/casync/test/test-casync.c:44,1
    - Dst: ca_sync_step
      Src: /src/casync/test/test-casync.c:47,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:48,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:53,1
    - Dst: ca_sync_get_archive_digest
      Src: /src/casync/test/test-casync.c:53,1
    - Dst: printf
      Src: /src/casync/test/test-casync.c:54,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/test/test-casync.c:54,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:65,1
    - Dst: ca_sync_unref
      Src: /src/casync/test/test-casync.c:70,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:71,1
    - Dst: ca_sync_new_decode
      Src: /src/casync/test/test-casync.c:71,1
    - Dst: mkdir
      Src: /src/casync/test/test-casync.c:73,1
    - Dst: open
      Src: /src/casync/test/test-casync.c:74,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:76,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:77,1
    - Dst: ca_sync_set_base_fd
      Src: /src/casync/test/test-casync.c:77,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:79,1
    - Dst: ca_sync_enable_archive_digest
      Src: /src/casync/test/test-casync.c:79,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:80,1
    - Dst: ca_sync_set_store_path
      Src: /src/casync/test/test-casync.c:80,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:81,1
    - Dst: ca_sync_set_index_path
      Src: /src/casync/test/test-casync.c:81,1
    - Dst: ca_sync_step
      Src: /src/casync/test/test-casync.c:84,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:85,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:90,1
    - Dst: ca_sync_get_archive_digest
      Src: /src/casync/test/test-casync.c:90,1
    - Dst: printf
      Src: /src/casync/test/test-casync.c:91,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/test/test-casync.c:91,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:102,1
    - Dst: ca_sync_unref
      Src: /src/casync/test/test-casync.c:107,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:109,1
    - Dst: unlink
      Src: /src/casync/test/test-casync.c:109,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:110,1
    - Dst: rm_rf
      Src: /src/casync/test/test-casync.c:110,1
    - Dst: assert_se
      Src: /src/casync/test/test-casync.c:111,1
    - Dst: rm_rf
      Src: /src/casync/test/test-casync.c:111,1
    - Dst: free
      Src: /src/casync/test/test-casync.c:113,1
    - Dst: free
      Src: /src/casync/test/test-casync.c:114,1
    - Dst: free
      Src: /src/casync/test/test-casync.c:115,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 78
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (var_tmp_dir(&d) >= 0)
      pos:
        line_end: 19
        line_start: 19
        source_file: /src/casync/test/test-casync.c
    constantsTouched: []
    func_position:
      end: 118
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 118
    functionName: main
    functionSourceFile: /src/casync/test/test-casync.c
    functionUses: 0
    functionsReached:
    - unlink
    - random_u64
    - ca_sync_enable_archive_digest
    - ca_chunk_id_format
    - assert_se
    - ca_sync_unref
    - ca_sync_set_store_path
    - open
    - ca_sync_new_encode
    - asprintf
    - var_tmp_dir
    - printf
    - rm_rf
    - assert
    - ca_sync_step
    - ca_sync_new_decode
    - geteuid
    - ca_sync_get_archive_digest
    - ca_sync_set_feature_flags
    - mkdir
    - ca_sync_set_base_fd
    - ca_sync_set_index_path
    - free
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - b
    - n
    - x
    argTypes:
    - int[]
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 23
    functionName: find_bst
    functionSourceFile: /src/casync/test/test-camakebst.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t find_bst(const int b[], size_t n, int x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAX
      Src: /src/casync/test/test-camakebst.c:27,1
    - Dst: MAX
      Src: /src/casync/test/test-camakebst.c:27,1
    - Dst: ca_make_bst
      Src: /src/casync/test/test-camakebst.c:34,1
    - Dst: assert_se
      Src: /src/casync/test/test-camakebst.c:37,1
    - Dst: assert_se
      Src: /src/casync/test/test-camakebst.c:38,1
    - Dst: find_bst
      Src: /src/casync/test/test-camakebst.c:44,1
    - Dst: assert_se
      Src: /src/casync/test/test-camakebst.c:45,1
    - Dst: assert_se
      Src: /src/casync/test/test-camakebst.c:47,1
    - Dst: assert_se
      Src: /src/casync/test/test-camakebst.c:50,1
    - Dst: find_bst
      Src: /src/casync/test/test-camakebst.c:50,1
    - Dst: assert_se
      Src: /src/casync/test/test-camakebst.c:51,1
    - Dst: find_bst
      Src: /src/casync/test/test-camakebst.c:51,1
    - Dst: assert_se
      Src: /src/casync/test/test-camakebst.c:52,1
    - Dst: find_bst
      Src: /src/casync/test/test-camakebst.c:52,1
    - Dst: assert_se
      Src: /src/casync/test/test-camakebst.c:53,1
    - Dst: find_bst
      Src: /src/casync/test/test-camakebst.c:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - n
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 54
    functionName: test_makebst_size
    functionSourceFile: /src/casync/test/test-camakebst.c
    functionUses: 0
    functionsReached:
    - assert_se
    - ca_make_bst
    - find_bst
    - MAX
    linkageType: ''
    returnType: void
    signature: void test_makebst_size(size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_makebst_size
      Src: /src/casync/test/test-camakebst.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 63
    functionName: main
    functionSourceFile: /src/casync/test/test-camakebst.c
    functionUses: 0
    functionsReached:
    - test_makebst_size
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: log_error
      Src: /src/casync/test/test-calc-digest.c:22,1
    - Dst: ca_digest_type_from_string
      Src: /src/casync/test/test-calc-digest.c:31,1
    - Dst: log_error
      Src: /src/casync/test/test-calc-digest.c:33,1
    - Dst: ca_digest_new
      Src: /src/casync/test/test-calc-digest.c:40,1
    - Dst: log_error
      Src: /src/casync/test/test-calc-digest.c:42,1
    - Dst: open
      Src: /src/casync/test/test-calc-digest.c:47,1
    - Dst: log_error_errno
      Src: /src/casync/test/test-calc-digest.c:49,1
    - Dst: read
      Src: /src/casync/test/test-calc-digest.c:59,1
    - Dst: log_error_errno
      Src: /src/casync/test/test-calc-digest.c:61,1
    - Dst: ca_digest_write
      Src: /src/casync/test/test-calc-digest.c:67,1
    - Dst: ca_digest_read
      Src: /src/casync/test/test-calc-digest.c:70,1
    - Dst: ca_digest_get_size
      Src: /src/casync/test/test-calc-digest.c:71,1
    - Dst: hexmem
      Src: /src/casync/test/test-calc-digest.c:73,1
    - Dst: log_oom
      Src: /src/casync/test/test-calc-digest.c:75,1
    - Dst: fputs
      Src: /src/casync/test/test-calc-digest.c:79,1
    - Dst: fputc
      Src: /src/casync/test/test-calc-digest.c:80,1
    - Dst: ca_digest_free
      Src: /src/casync/test/test-calc-digest.c:85,1
    - Dst: safe_close
      Src: /src/casync/test/test-calc-digest.c:88,1
    - Dst: free
      Src: /src/casync/test/test-calc-digest.c:90,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 63
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 93
    functionName: main
    functionSourceFile: /src/casync/test/test-calc-digest.c
    functionUses: 0
    functionsReached:
    - ca_digest_get_size
    - ca_digest_write
    - ca_digest_type_from_string
    - hexmem
    - safe_close
    - fputc
    - ca_digest_new
    - log_error_errno
    - log_oom
    - free
    - log_error
    - fputs
    - ca_digest_read
    - read
    - ca_digest_free
    - open
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/test/test-feature-flags.c:13,1
    - Dst: UINT64_C
      Src: /src/casync/test/test-feature-flags.c:13,1
    - Dst: assert
      Src: /src/casync/test/test-feature-flags.c:16,1
    - Dst: UINT64_C
      Src: /src/casync/test/test-feature-flags.c:16,1
    - Dst: assert
      Src: /src/casync/test/test-feature-flags.c:17,1
    - Dst: UINT64_C
      Src: /src/casync/test/test-feature-flags.c:17,1
    - Dst: assert
      Src: /src/casync/test/test-feature-flags.c:18,1
    - Dst: UINT64_C
      Src: /src/casync/test/test-feature-flags.c:18,1
    - Dst: assert
      Src: /src/casync/test/test-feature-flags.c:19,1
    - Dst: UINT64_C
      Src: /src/casync/test/test-feature-flags.c:19,1
    - Dst: assert
      Src: /src/casync/test/test-feature-flags.c:20,1
    - Dst: UINT64_C
      Src: /src/casync/test/test-feature-flags.c:20,1
    - Dst: assert
      Src: /src/casync/test/test-feature-flags.c:21,1
    - Dst: UINT64_C
      Src: /src/casync/test/test-feature-flags.c:21,1
    - Dst: assert
      Src: /src/casync/test/test-feature-flags.c:22,1
    - Dst: UINT64_C
      Src: /src/casync/test/test-feature-flags.c:22,1
    - Dst: assert_se
      Src: /src/casync/test/test-feature-flags.c:26,1
    - Dst: ca_feature_flags_normalize
      Src: /src/casync/test/test-feature-flags.c:26,1
    - Dst: assert_se
      Src: /src/casync/test/test-feature-flags.c:27,1
    - Dst: assert_se
      Src: /src/casync/test/test-feature-flags.c:29,1
    - Dst: ca_feature_flags_are_normalized
      Src: /src/casync/test/test-feature-flags.c:29,1
    - Dst: assert_se
      Src: /src/casync/test/test-feature-flags.c:30,1
    - Dst: ca_feature_flags_are_normalized
      Src: /src/casync/test/test-feature-flags.c:30,1
    - Dst: assert_se
      Src: /src/casync/test/test-feature-flags.c:31,1
    - Dst: ca_feature_flags_are_normalized
      Src: /src/casync/test/test-feature-flags.c:31,1
    - Dst: assert_se
      Src: /src/casync/test/test-feature-flags.c:32,1
    - Dst: ca_feature_flags_are_normalized
      Src: /src/casync/test/test-feature-flags.c:32,1
    - Dst: UINT64_C
      Src: /src/casync/test/test-feature-flags.c:35,1
    - Dst: ca_with_feature_flags_format
      Src: /src/casync/test/test-feature-flags.c:38,1
    - Dst: assert_se
      Src: /src/casync/test/test-feature-flags.c:41,1
    - Dst: assert_se
      Src: /src/casync/test/test-feature-flags.c:43,1
    - Dst: assert_se
      Src: /src/casync/test/test-feature-flags.c:48,1
    - Dst: isempty
      Src: /src/casync/test/test-feature-flags.c:48,1
    - Dst: isempty
      Src: /src/casync/test/test-feature-flags.c:49,1
    - Dst: assert_se
      Src: /src/casync/test/test-feature-flags.c:52,1
    - Dst: ca_with_feature_flags_parse_one
      Src: /src/casync/test/test-feature-flags.c:52,1
    - Dst: assert_se
      Src: /src/casync/test/test-feature-flags.c:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: ((CA_FORMAT_WITH_UNIX & ~CA_FORMAT_WITH_MASK) == UINT64_C(0))
      pos:
        line_end: 16
        line_start: 16
        source_file: /src/casync/test/test-feature-flags.c
    - condition: ((CA_FORMAT_WITH_BEST & ~CA_FORMAT_WITH_MASK) == UINT64_C(0))
      pos:
        line_end: 15
        line_start: 15
        source_file: /src/casync/test/test-feature-flags.c
    - condition: ((CA_FORMAT_WITH_PRIVILEGED & ~CA_FORMAT_WITH_MASK) == UINT64_C(0))
      pos:
        line_end: 20
        line_start: 20
        source_file: /src/casync/test/test-feature-flags.c
    - condition: ((CA_FORMAT_WITH_FAT & ~CA_FORMAT_WITH_MASK) == UINT64_C(0))
      pos:
        line_end: 17
        line_start: 17
        source_file: /src/casync/test/test-feature-flags.c
    - condition: ((CA_FORMAT_WITH_FUSE & ~CA_FORMAT_WITH_MASK) == UINT64_C(0))
      pos:
        line_end: 21
        line_start: 21
        source_file: /src/casync/test/test-feature-flags.c
    - condition: ((CA_FORMAT_WITH_MASK & ~CA_FORMAT_FEATURE_FLAGS_MAX) == UINT64_C(0))
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/casync/test/test-feature-flags.c
    - condition: ((CA_FORMAT_WITH_CHATTR & ~CA_FORMAT_WITH_MASK) == UINT64_C(0))
      pos:
        line_end: 18
        line_start: 18
        source_file: /src/casync/test/test-feature-flags.c
    - condition: ((CA_FORMAT_WITH_FAT_ATTRS & ~CA_FORMAT_WITH_MASK) == UINT64_C(0))
      pos:
        line_end: 19
        line_start: 19
        source_file: /src/casync/test/test-feature-flags.c
    constantsTouched: []
    func_position:
      end: 57
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 57
    functionName: main
    functionSourceFile: /src/casync/test/test-feature-flags.c
    functionUses: 0
    functionsReached:
    - ca_feature_flags_are_normalized
    - ca_with_feature_flags_format
    - UINT64_C
    - ca_with_feature_flags_parse_one
    - isempty
    - assert_se
    - ca_feature_flags_normalize
    - assert
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/test/test-caformat.c:12,1
    - Dst: _cleanup_
      Src: /src/casync/test/test-caformat.c:14,1
    - Dst: log_error
      Src: /src/casync/test/test-caformat.c:18,1
    - Dst: open
      Src: /src/casync/test/test-caformat.c:23,1
    - Dst: log_error_errno
      Src: /src/casync/test/test-caformat.c:25,1
    - Dst: realloc_buffer_size
      Src: /src/casync/test/test-caformat.c:33,1
    - Dst: MIN
      Src: /src/casync/test/test-caformat.c:38,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/test/test-caformat.c:40,1
    - Dst: realloc_buffer_read
      Src: /src/casync/test/test-caformat.c:50,1
    - Dst: log_error_errno
      Src: /src/casync/test/test-caformat.c:52,1
    - Dst: log_error
      Src: /src/casync/test/test-caformat.c:62,1
    - Dst: realloc_buffer_data
      Src: /src/casync/test/test-caformat.c:70,1
    - Dst: printf
      Src: /src/casync/test/test-caformat.c:72,1
    - Dst: ca_format_type_name
      Src: /src/casync/test/test-caformat.c:72,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:72,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:74,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:79,1
    - Dst: printf
      Src: /src/casync/test/test-caformat.c:85,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:88,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:89,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:90,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/test/test-caformat.c:92,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:100,1
    - Dst: printf
      Src: /src/casync/test/test-caformat.c:106,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/test/test-caformat.c:108,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:116,1
    - Dst: printf
      Src: /src/casync/test/test-caformat.c:122,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/test/test-caformat.c:124,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:132,1
    - Dst: printf
      Src: /src/casync/test/test-caformat.c:138,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/test/test-caformat.c:140,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:151,1
    - Dst: printf
      Src: /src/casync/test/test-caformat.c:152,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/test/test-caformat.c:154,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:162,1
    - Dst: printf
      Src: /src/casync/test/test-caformat.c:168,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/test/test-caformat.c:170,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:178,1
    - Dst: printf
      Src: /src/casync/test/test-caformat.c:184,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/test/test-caformat.c:186,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:194,1
    - Dst: printf
      Src: /src/casync/test/test-caformat.c:200,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/test/test-caformat.c:202,1
    - Dst: read_le64
      Src: /src/casync/test/test-caformat.c:211,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/test/test-caformat.c:215,1
    - Dst: log_error
      Src: /src/casync/test/test-caformat.c:220,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 146
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 228
    functionName: main
    functionSourceFile: /src/casync/test/test-caformat.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_read
    - realloc_buffer_data
    - MIN
    - log_error_errno
    - _cleanup_
    - log_error
    - printf
    - read_le64
    - ca_format_type_name
    - realloc_buffer_size
    - realloc_buffer_advance
    - open
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/test/fuzz/fuzz-main.c:28,1
    - Dst: fopen
      Src: /src/casync/test/fuzz/fuzz-main.c:28,1
    - Dst: log_error_errno
      Src: /src/casync/test/fuzz/fuzz-main.c:30,1
    - Dst: fread
      Src: /src/casync/test/fuzz/fuzz-main.c:34,1
    - Dst: log_error_errno
      Src: /src/casync/test/fuzz/fuzz-main.c:36,1
    - Dst: printf
      Src: /src/casync/test/fuzz/fuzz-main.c:40,1
    - Dst: fflush
      Src: /src/casync/test/fuzz/fuzz-main.c:41,1
    - Dst: LLVMFuzzerTestOneInput
      Src: /src/casync/test/fuzz/fuzz-main.c:42,1
    - Dst: printf
      Src: /src/casync/test/fuzz/fuzz-main.c:44,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 48
    functionName: main
    functionSourceFile: /src/casync/test/fuzz/fuzz-main.c
    functionUses: 0
    functionsReached:
    - fflush
    - fread
    - log_error_errno
    - fopen
    - printf
    - LLVMFuzzerTestOneInput
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/casync/test/fuzz/fuzz-compress.c:27,1
    - Dst: set_log_level
      Src: /src/casync/test/fuzz/fuzz-compress.c:28,1
    - Dst: _cleanup_
      Src: /src/casync/test/fuzz/fuzz-compress.c:33,1
    - Dst: compressor_start_decode
      Src: /src/casync/test/fuzz/fuzz-compress.c:35,1
    - Dst: log_debug_errno
      Src: /src/casync/test/fuzz/fuzz-compress.c:37,1
    - Dst: log_info
      Src: /src/casync/test/fuzz/fuzz-compress.c:41,1
    - Dst: MAX
      Src: /src/casync/test/fuzz/fuzz-compress.c:43,1
    - Dst: malloc
      Src: /src/casync/test/fuzz/fuzz-compress.c:45,1
    - Dst: log_oom
      Src: /src/casync/test/fuzz/fuzz-compress.c:47,1
    - Dst: compressor_input
      Src: /src/casync/test/fuzz/fuzz-compress.c:51,1
    - Dst: log_debug_errno
      Src: /src/casync/test/fuzz/fuzz-compress.c:53,1
    - Dst: compressor_decode
      Src: /src/casync/test/fuzz/fuzz-compress.c:57,1
    - Dst: log_debug_errno
      Src: /src/casync/test/fuzz/fuzz-compress.c:59,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 64
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/casync/test/fuzz/fuzz-compress.c
    functionUses: 1
    functionsReached:
    - set_log_level
    - getenv
    - log_oom
    - malloc
    - compressor_input
    - compressor_start_decode
    - compressor_decode
    - MAX
    - log_info
    - log_debug_errno
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 21
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 44
    argCount: 1
    argNames:
    - u
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 75
    functionName: ca_format_type_name
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ca_format_type_name(uint64_t u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ELEMENTSOF
      Src: /src/casync/src/caformat-util.c:127,1
    - Dst: streq
      Src: /src/casync/src/caformat-util.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - name
    - ret
    argTypes:
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 134
    functionName: ca_with_feature_flags_parse_one
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 1
    functionsReached:
    - ELEMENTSOF
    - streq
    linkageType: ''
    returnType: int
    signature: int ca_with_feature_flags_parse_one(const char *name, uint64_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ELEMENTSOF
      Src: /src/casync/src/caformat-util.c:147,1
    - Dst: strextend
      Src: /src/casync/src/caformat-util.c:158,1
    - Dst: free
      Src: /src/casync/src/caformat-util.c:159,1
    - Dst: assert
      Src: /src/casync/src/caformat-util.c:166,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - features
    - ret
    argTypes:
    - uint64_t
    - char**
    assertStmts:
    - condition: (features == 0)
      pos:
        line_end: 165
        line_start: 165
        source_file: /src/casync/src/caformat-util.c
    constantsTouched: []
    func_position:
      end: 170
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 170
    functionName: ca_with_feature_flags_format
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 1
    functionsReached:
    - ELEMENTSOF
    - strextend
    - assert
    - free
    linkageType: ''
    returnType: int
    signature: int ca_with_feature_flags_format(uint64_t features, char **ret)
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 2
    argNames:
    - flags
    - ret
    argTypes:
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 211
    functionName: ca_feature_flags_normalize
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_feature_flags_normalize(uint64_t flags, uint64_t *ret)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 24
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 257
    functionName: ca_feature_flags_are_normalized
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_feature_flags_are_normalized(uint64_t flags)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - mask
    - ret
    argTypes:
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 285
    functionName: ca_feature_flags_normalize_mask
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_feature_flags_normalize_mask(uint64_t mask, uint64_t *ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - flags
    - ret
    argTypes:
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 308
    functionName: ca_feature_flags_time_granularity_nsec
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_feature_flags_time_granularity_nsec(uint64_t flags, uint64_t
      *ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ELEMENTSOF
      Src: /src/casync/src/caformat-util.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - flags
    argTypes:
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 335
    functionName: ca_feature_flags_from_chattr
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 0
    functionsReached:
    - ELEMENTSOF
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t ca_feature_flags_from_chattr(unsigned flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ELEMENTSOF
      Src: /src/casync/src/caformat-util.c:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 347
    functionName: ca_feature_flags_to_chattr
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 0
    functionsReached:
    - ELEMENTSOF
    linkageType: ''
    returnType: unsigned
    signature: unsigned ca_feature_flags_to_chattr(uint64_t flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ELEMENTSOF
      Src: /src/casync/src/caformat-util.c:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 367
    functionName: ca_feature_flags_from_fat_attrs
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 0
    functionsReached:
    - ELEMENTSOF
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t ca_feature_flags_from_fat_attrs(uint32_t flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ELEMENTSOF
      Src: /src/casync/src/caformat-util.c:373,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 379
    functionName: ca_feature_flags_to_fat_attrs
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 0
    functionsReached:
    - ELEMENTSOF
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t ca_feature_flags_to_fat_attrs(uint64_t flags)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - magic
    argTypes:
    - statfs_f_type_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 519
    functionName: ca_feature_flags_from_magic
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t ca_feature_flags_from_magic(statfs_f_type_t magic)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - type
    argTypes:
    - CaDigestType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 534
    functionName: ca_feature_flags_from_digest_type
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t ca_feature_flags_from_digest_type(CaDigestType type)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 542
    functionName: ca_feature_flags_to_digest_type
    functionSourceFile: /src/casync/src/caformat-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CaDigestType
    signature: CaDigestType ca_feature_flags_to_digest_type(uint64_t flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/mempool.c:41,1
    - Dst: assert
      Src: /src/casync/src/mempool.c:42,1
    - Dst: _unlikely_
      Src: /src/casync/src/mempool.c:52,1
    - Dst: _unlikely_
      Src: /src/casync/src/mempool.c:53,1
    - Dst: MAX
      Src: /src/casync/src/mempool.c:59,1
    - Dst: PAGE_ALIGN
      Src: /src/casync/src/mempool.c:60,1
    - Dst: ALIGN
      Src: /src/casync/src/mempool.c:60,1
    - Dst: ALIGN
      Src: /src/casync/src/mempool.c:61,1
    - Dst: malloc
      Src: /src/casync/src/mempool.c:63,1
    - Dst: ALIGN
      Src: /src/casync/src/mempool.c:76,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct mempool*
    assertStmts:
    - condition: (mp->tile_size >= sizeof(void*))
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/casync/src/mempool.c
    - condition: (mp->at_least > 0)
      pos:
        line_end: 41
        line_start: 41
        source_file: /src/casync/src/mempool.c
    constantsTouched: []
    func_position:
      end: 77
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 77
    functionName: mempool_alloc_tile
    functionSourceFile: /src/casync/src/mempool.c
    functionUses: 0
    functionsReached:
    - ALIGN
    - PAGE_ALIGN
    - _unlikely_
    - malloc
    - MAX
    - assert
    linkageType: ''
    returnType: void
    signature: void * mempool_alloc_tile(struct mempool *mp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mempool_alloc_tile
      Src: /src/casync/src/mempool.c:82,1
    - Dst: memzero
      Src: /src/casync/src/mempool.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct mempool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 86
    functionName: mempool_alloc0_tile
    functionSourceFile: /src/casync/src/mempool.c
    functionUses: 0
    functionsReached:
    - memzero
    - mempool_alloc_tile
    linkageType: ''
    returnType: void
    signature: void * mempool_alloc0_tile(struct mempool *mp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mp
    - p
    argTypes:
    - struct mempool*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: mempool_free_tile
    functionSourceFile: /src/casync/src/mempool.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mempool_free_tile(struct mempool *mp, void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/casync/src/mempool.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct mempool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 103
    functionName: mempool_drop
    functionSourceFile: /src/casync/src/mempool.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void mempool_drop(struct mempool *mp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/cafileroot.c:14,1
    - Dst: strdup
      Src: /src/casync/src/cafileroot.c:22,1
    - Dst: free
      Src: /src/casync/src/cafileroot.c:24,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - path
    - fd
    - ret
    argTypes:
    - char*
    - int
    - CaFileRoot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 31
    functionName: ca_file_root_new
    functionSourceFile: /src/casync/src/cafileroot.c
    functionUses: 0
    functionsReached:
    - new0
    - free
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_file_root_new(const char *path, int fd, CaFileRoot **ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/src/cafileroot.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - root
    argTypes:
    - CaFileRoot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 42
    functionName: ca_file_root_ref
    functionSourceFile: /src/casync/src/cafileroot.c
    functionUses: 0
    functionsReached:
    - assert_se
    linkageType: ''
    returnType: CaFileRoot
    signature: CaFileRoot * ca_file_root_ref(CaFileRoot *root)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/src/cafileroot.c:48,1
    - Dst: free
      Src: /src/casync/src/cafileroot.c:55,1
    - Dst: mfree
      Src: /src/casync/src/cafileroot.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - CaFileRoot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 58
    functionName: ca_file_root_unref
    functionSourceFile: /src/casync/src/cafileroot.c
    functionUses: 0
    functionsReached:
    - assert_se
    - mfree
    - free
    linkageType: ''
    returnType: CaFileRoot
    signature: CaFileRoot * ca_file_root_unref(CaFileRoot *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mfree
      Src: /src/casync/src/cafileroot.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - root
    argTypes:
    - CaFileRoot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: ca_file_root_invalidate
    functionSourceFile: /src/casync/src/cafileroot.c
    functionUses: 0
    functionsReached:
    - mfree
    linkageType: ''
    returnType: void
    signature: void ca_file_root_invalidate(CaFileRoot *root)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SHA256_Init
      Src: /src/casync/src/cadigest.c:25,1
    - Dst: SHA512_Init
      Src: /src/casync/src/cadigest.c:34,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadigest.c:35,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadigest.c:36,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadigest.c:37,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadigest.c:38,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadigest.c:39,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadigest.c:40,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadigest.c:41,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadigest.c:42,1
    - Dst: assert_not_reached
      Src: /src/casync/src/cadigest.c:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDigest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 49
    functionName: ca_digest_reset
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 1
    functionsReached:
    - SHA512_Init
    - assert_not_reached
    - UINT64_C
    - SHA256_Init
    linkageType: ''
    returnType: void
    signature: void ca_digest_reset(CaDigest *d)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/cadigest.c:61,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/cadigest.c:67,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - t
    - ret
    argTypes:
    - CaDigestType
    - CaDigest**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 71
    functionName: ca_digest_new
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 4
    functionsReached:
    - new0
    - ca_digest_reset
    linkageType: ''
    returnType: int
    signature: int ca_digest_new(CaDigestType t, CaDigest **ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mfree
      Src: /src/casync/src/cadigest.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDigest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 75
    functionName: ca_digest_free
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 3
    functionsReached:
    - mfree
    linkageType: ''
    returnType: CaDigest
    signature: CaDigest *ca_digest_free(CaDigest *d)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadigest.c:83,1
    - Dst: SHA256_Update
      Src: /src/casync/src/cadigest.c:88,1
    - Dst: SHA512_Update
      Src: /src/casync/src/cadigest.c:92,1
    - Dst: assert_not_reached
      Src: /src/casync/src/cadigest.c:96,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - d
    - p
    - l
    argTypes:
    - CaDigest*
    - void*
    - size_t
    assertStmts:
    - condition: (p)
      pos:
        line_end: 82
        line_start: 82
        source_file: /src/casync/src/cadigest.c
    constantsTouched: []
    func_position:
      end: 98
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 98
    functionName: ca_digest_write
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 3
    functionsReached:
    - assert
    - SHA512_Update
    - SHA256_Update
    - assert_not_reached
    linkageType: ''
    returnType: void
    signature: void ca_digest_write(CaDigest *d, const void *p, size_t l)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadigest.c:107,1
    - Dst: SHA256_Final
      Src: /src/casync/src/cadigest.c:108,1
    - Dst: assert
      Src: /src/casync/src/cadigest.c:112,1
    - Dst: SHA512_Final
      Src: /src/casync/src/cadigest.c:113,1
    - Dst: assert_not_reached
      Src: /src/casync/src/cadigest.c:117,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDigest*
    assertStmts:
    - condition: (sizeof(d->result) >= SHA256_DIGEST_LENGTH)
      pos:
        line_end: 106
        line_start: 106
        source_file: /src/casync/src/cadigest.c
    - condition: (sizeof(d->result) >= SHA512_DIGEST_LENGTH)
      pos:
        line_end: 111
        line_start: 111
        source_file: /src/casync/src/cadigest.c
    constantsTouched: []
    func_position:
      end: 122
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 122
    functionName: ca_digest_read
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 2
    functionsReached:
    - assert_not_reached
    - assert
    - SHA512_Final
    - SHA256_Final
    linkageType: ''
    returnType: void
    signature: void * ca_digest_read(CaDigest *d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_type_size
      Src: /src/casync/src/cadigest.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDigest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: ca_digest_get_size
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 1
    functionsReached:
    - ca_digest_type_size
    linkageType: ''
    returnType: size_t
    signature: size_t ca_digest_get_size(CaDigest *d)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDigest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 136
    functionName: ca_digest_get_type
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CaDigestType
    signature: CaDigestType ca_digest_get_type(CaDigest *d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_type_to_string
      Src: /src/casync/src/cadigest.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDigest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 143
    functionName: ca_digest_get_name
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 0
    functionsReached:
    - ca_digest_type_to_string
    linkageType: ''
    returnType: char
    signature: char *ca_digest_get_name(CaDigest *d)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadigest.c:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - t
    argTypes:
    - CaDigestType
    assertStmts:
    - condition: (SHA256_DIGEST_LENGTH == SHA512_DIGEST_LENGTH/2)
      pos:
        line_end: 150
        line_start: 150
        source_file: /src/casync/src/cadigest.c
    constantsTouched: []
    func_position:
      end: 157
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 157
    functionName: ca_digest_type_size
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: size_t
    signature: size_t ca_digest_type_size(CaDigestType t)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - CaDigestType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 169
    functionName: ca_digest_type_to_string
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ca_digest_type_to_string(CaDigestType t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/casync/src/cadigest.c:177,1
    - Dst: streq
      Src: /src/casync/src/cadigest.c:181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 185
    functionName: ca_digest_type_from_string
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 1
    functionsReached:
    - streq
    linkageType: ''
    returnType: CaDigestType
    signature: CaDigestType ca_digest_type_from_string(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_new
      Src: /src/casync/src/cadigest.c:195,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - d
    - t
    argTypes:
    - CaDigest**
    - CaDigestType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 200
    functionName: ca_digest_ensure_allocated
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 0
    functionsReached:
    - ca_digest_new
    linkageType: ''
    returnType: int
    signature: int ca_digest_ensure_allocated(CaDigest **d, CaDigestType t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_reset
      Src: /src/casync/src/cadigest.c:211,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - d
    - t
    argTypes:
    - CaDigest*
    - CaDigestType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 214
    functionName: ca_digest_set_type
    functionSourceFile: /src/casync/src/cadigest.c
    functionUses: 0
    functionsReached:
    - ca_digest_reset
    linkageType: ''
    returnType: int
    signature: int ca_digest_set_type(CaDigest *d, CaDigestType t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - e
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 10
    functionName: pow_of_2
    functionSourceFile: /src/casync/src/camakebst.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t pow_of_2(size_t e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/camakebst.c:13,1
    - Dst: __builtin_clzl
      Src: /src/casync/src/camakebst.c:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - k
    argTypes:
    - size_t
    assertStmts:
    - condition: (sizeof(size_t) == sizeof(unsigned long))
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/casync/src/camakebst.c
    constantsTouched: []
    func_position:
      end: 16
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 16
    functionName: log_of_2
    functionSourceFile: /src/casync/src/camakebst.c
    functionUses: 0
    functionsReached:
    - assert
    - __builtin_clzl
    linkageType: ''
    returnType: size_t
    signature: size_t log_of_2(size_t k)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/camakebst.c:31,1
    - Dst: assert
      Src: /src/casync/src/camakebst.c:32,1
    - Dst: assert
      Src: /src/casync/src/camakebst.c:33,1
    - Dst: assert
      Src: /src/casync/src/camakebst.c:34,1
    - Dst: pow_of_2
      Src: /src/casync/src/camakebst.c:36,1
    - Dst: pow_of_2
      Src: /src/casync/src/camakebst.c:37,1
    - Dst: memcpy
      Src: /src/casync/src/camakebst.c:48,1
    - Dst: make_bst_inner
      Src: /src/casync/src/camakebst.c:51,1
    - Dst: make_bst_inner
      Src: /src/casync/src/camakebst.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 6
    argNames:
    - input
    - n
    - size
    - e
    - output
    - i
    argTypes:
    - void*
    - size_t
    - size_t
    - size_t
    - void*
    - size_t
    assertStmts:
    - condition: (input)
      pos:
        line_end: 30
        line_start: 30
        source_file: /src/casync/src/camakebst.c
    - condition: (size > 0)
      pos:
        line_end: 31
        line_start: 31
        source_file: /src/casync/src/camakebst.c
    - condition: (e > 0)
      pos:
        line_end: 32
        line_start: 32
        source_file: /src/casync/src/camakebst.c
    - condition: (output)
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/casync/src/camakebst.c
    constantsTouched: []
    func_position:
      end: 65
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 65
    functionName: make_bst_inner
    functionSourceFile: /src/casync/src/camakebst.c
    functionUses: 1
    functionsReached:
    - assert
    - make_bst_inner
    - pow_of_2
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void make_bst_inner(\n                const void *input,\n                size_t
      n,\n                size_t size,\n                size_t e,\n                void
      *output,\n                size_t i)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/camakebst.c:68,1
    - Dst: make_bst_inner
      Src: /src/casync/src/camakebst.c:82,1
    - Dst: log_of_2
      Src: /src/casync/src/camakebst.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - input
    - n
    - size
    - output
    argTypes:
    - void*
    - size_t
    - size_t
    - void*
    assertStmts:
    - condition: (size > 0)
      pos:
        line_end: 67
        line_start: 67
        source_file: /src/casync/src/camakebst.c
    constantsTouched: []
    func_position:
      end: 83
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 83
    functionName: ca_make_bst
    functionSourceFile: /src/casync/src/camakebst.c
    functionUses: 1
    functionsReached:
    - assert
    - make_bst_inner
    - log_of_2
    linkageType: ''
    returnType: void
    signature: void ca_make_bst(const void *input, size_t n, size_t size, void *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_store_unref
      Src: /src/casync/src/castore.h:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - store
    argTypes:
    - CaStore**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: ca_store_unrefp
    functionSourceFile: /src/casync/src/castore.h
    functionUses: 0
    functionsReached:
    - ca_store_unref
    linkageType: ''
    returnType: void
    signature: void ca_store_unrefp(CaStore **store)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_store_iterator_unref
      Src: /src/casync/src/castore.h:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - CaStoreIterator**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: ca_store_iterator_unrefp
    functionSourceFile: /src/casync/src/castore.h
    functionUses: 0
    functionsReached:
    - ca_store_iterator_unref
    linkageType: ''
    returnType: void
    signature: void ca_store_iterator_unrefp(CaStoreIterator **iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: siphash24_compress
      Src: /src/casync/src/gc.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - state
    argTypes:
    - void*
    - struct siphash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 19
    functionName: chunk_hash_func
    functionSourceFile: /src/casync/src/gc.c
    functionUses: 0
    functionsReached:
    - siphash24_compress
    linkageType: ''
    returnType: void
    signature: void chunk_hash_func(const void *p, struct siphash *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/casync/src/gc.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: chunk_compare_func
    functionSourceFile: /src/casync/src/gc.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int chunk_compare_func(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/gc.c:33,1
    - Dst: set_new
      Src: /src/casync/src/gc.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 40
    functionName: ca_chunk_collection_new
    functionSourceFile: /src/casync/src/gc.c
    functionUses: 0
    functionsReached:
    - new0
    - set_new
    linkageType: ''
    returnType: CaChunkCollection
    signature: CaChunkCollection * ca_chunk_collection_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_free_free
      Src: /src/casync/src/gc.c:46,1
    - Dst: mfree
      Src: /src/casync/src/gc.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - c
    argTypes:
    - CaChunkCollection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 49
    functionName: ca_chunk_collection_unref
    functionSourceFile: /src/casync/src/gc.c
    functionUses: 0
    functionsReached:
    - set_free_free
    - mfree
    linkageType: ''
    returnType: CaChunkCollection
    signature: CaChunkCollection * ca_chunk_collection_unref(CaChunkCollection *c)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - c
    - ret
    argTypes:
    - CaChunkCollection*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: ca_chunk_collection_usage
    functionSourceFile: /src/casync/src/gc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_chunk_collection_usage(CaChunkCollection *c, size_t *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_size
      Src: /src/casync/src/gc.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - c
    - ret
    argTypes:
    - CaChunkCollection*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 69
    functionName: ca_chunk_collection_size
    functionSourceFile: /src/casync/src/gc.c
    functionUses: 0
    functionsReached:
    - set_size
    linkageType: ''
    returnType: int
    signature: int ca_chunk_collection_size(CaChunkCollection *c, size_t *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/casync/src/gc.c:77,1
    - Dst: log_oom
      Src: /src/casync/src/gc.c:79,1
    - Dst: set_consume
      Src: /src/casync/src/gc.c:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - coll
    - id
    argTypes:
    - CaChunkCollection*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 86
    functionName: gc_add_chunk_id
    functionSourceFile: /src/casync/src/gc.c
    functionUses: 0
    functionsReached:
    - set_consume
    - log_oom
    - memdup
    linkageType: ''
    returnType: int
    signature: int gc_add_chunk_id(CaChunkCollection *coll, CaChunkID *id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/gc.c:89,1
    - Dst: ca_index_new_read
      Src: /src/casync/src/gc.c:92,1
    - Dst: log_oom
      Src: /src/casync/src/gc.c:94,1
    - Dst: ca_index_set_path
      Src: /src/casync/src/gc.c:96,1
    - Dst: log_error_errno
      Src: /src/casync/src/gc.c:98,1
    - Dst: ca_index_open
      Src: /src/casync/src/gc.c:100,1
    - Dst: log_error_errno
      Src: /src/casync/src/gc.c:102,1
    - Dst: ca_index_read_chunk
      Src: /src/casync/src/gc.c:108,1
    - Dst: assert_se
      Src: /src/casync/src/gc.c:111,1
    - Dst: log_error_errno
      Src: /src/casync/src/gc.c:113,1
    - Dst: gc_add_chunk_id
      Src: /src/casync/src/gc.c:117,1
    - Dst: log_error_errno
      Src: /src/casync/src/gc.c:119,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/gc.c:120,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - coll
    - path
    argTypes:
    - CaChunkCollection*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 124
    functionName: ca_chunk_collection_add_index
    functionSourceFile: /src/casync/src/gc.c
    functionUses: 0
    functionsReached:
    - ca_index_open
    - log_error_errno
    - log_oom
    - _cleanup_
    - ca_index_read_chunk
    - ca_chunk_id_format
    - assert_se
    - gc_add_chunk_id
    - ca_index_new_read
    - ca_index_set_path
    linkageType: ''
    returnType: int
    signature: int ca_chunk_collection_add_index(CaChunkCollection *coll, const char
      *path)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/gc.c:135,1
    - Dst: ca_store_iterator_new
      Src: /src/casync/src/gc.c:135,1
    - Dst: log_oom
      Src: /src/casync/src/gc.c:137,1
    - Dst: ca_store_iterator_next
      Src: /src/casync/src/gc.c:144,1
    - Dst: log_error_errno
      Src: /src/casync/src/gc.c:146,1
    - Dst: assert_se
      Src: /src/casync/src/gc.c:152,1
    - Dst: strchr
      Src: /src/casync/src/gc.c:152,1
    - Dst: GREEDY_REALLOC
      Src: /src/casync/src/gc.c:153,1
    - Dst: log_oom
      Src: /src/casync/src/gc.c:154,1
    - Dst: strncpy
      Src: /src/casync/src/gc.c:156,1
    - Dst: ca_chunk_id_parse
      Src: /src/casync/src/gc.c:158,1
    - Dst: log_error
      Src: /src/casync/src/gc.c:159,1
    - Dst: set_contains
      Src: /src/casync/src/gc.c:163,1
    - Dst: printf
      Src: /src/casync/src/gc.c:167,1
    - Dst: unlinkat
      Src: /src/casync/src/gc.c:172,1
    - Dst: log_error_errno
      Src: /src/casync/src/gc.c:173,1
    - Dst: unlinkat
      Src: /src/casync/src/gc.c:178,1
    - Dst: printf
      Src: /src/casync/src/gc.c:187,1
    - Dst: printf
      Src: /src/casync/src/gc.c:190,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 42
    argCount: 3
    argNames:
    - store
    - coll
    - flags
    argTypes:
    - CaStore*
    - CaChunkCollection*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 193
    functionName: ca_gc_cleanup_unused
    functionSourceFile: /src/casync/src/gc.c
    functionUses: 0
    functionsReached:
    - ca_chunk_id_parse
    - unlinkat
    - strncpy
    - log_oom
    - log_error_errno
    - _cleanup_
    - GREEDY_REALLOC
    - set_contains
    - log_error
    - printf
    - ca_store_iterator_next
    - assert_se
    - strchr
    - ca_store_iterator_new
    linkageType: ''
    returnType: int
    signature: int ca_gc_cleanup_unused(CaStore *store, CaChunkCollection *coll, unsigned
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 16
    functionName: log_info
    functionSourceFile: /src/casync/src/log.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_info(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: log_error
    functionSourceFile: /src/casync/src/log.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_error(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: log_debug
    functionSourceFile: /src/casync/src/log.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_debug(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_error
      Src: /src/casync/src/log.h:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 22
    functionName: log_oom
    functionSourceFile: /src/casync/src/log.h
    functionUses: 6
    functionsReached:
    - log_error
    linkageType: ''
    returnType: int
    signature: int log_oom(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 32
    functionName: assert_se
    functionSourceFile: /src/casync/src/log.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assert_se(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: assert_not_reached
    functionSourceFile: /src/casync/src/log.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assert_not_reached(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_free
      Src: /src/casync/src/cadigest.h:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDigest**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: ca_digest_freep
    functionSourceFile: /src/casync/src/cadigest.h
    functionUses: 0
    functionsReached:
    - ca_digest_free
    linkageType: ''
    returnType: void
    signature: void ca_digest_freep(CaDigest **d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_write
      Src: /src/casync/src/cadigest.h:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d
    - u
    argTypes:
    - CaDigest*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: ca_digest_write_u8
    functionSourceFile: /src/casync/src/cadigest.h
    functionUses: 0
    functionsReached:
    - ca_digest_write
    linkageType: ''
    returnType: void
    signature: void ca_digest_write_u8(CaDigest *d, uint8_t u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htole32
      Src: /src/casync/src/cadigest.h:37,1
    - Dst: ca_digest_write
      Src: /src/casync/src/cadigest.h:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - d
    - u
    argTypes:
    - CaDigest*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: ca_digest_write_u32
    functionSourceFile: /src/casync/src/cadigest.h
    functionUses: 0
    functionsReached:
    - htole32
    - ca_digest_write
    linkageType: ''
    returnType: void
    signature: void ca_digest_write_u32(CaDigest *d, uint32_t u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htole64
      Src: /src/casync/src/cadigest.h:42,1
    - Dst: ca_digest_write
      Src: /src/casync/src/cadigest.h:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - d
    - u
    argTypes:
    - CaDigest*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: ca_digest_write_u64
    functionSourceFile: /src/casync/src/cadigest.h
    functionUses: 0
    functionsReached:
    - htole64
    - ca_digest_write
    linkageType: ''
    returnType: void
    signature: void ca_digest_write_u64(CaDigest *d, uint64_t u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - origin
    argTypes:
    - CaOrigin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: ca_origin_items
    functionSourceFile: /src/casync/src/caorigin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t ca_origin_items(CaOrigin *origin)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - origin
    argTypes:
    - CaOrigin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: ca_origin_bytes
    functionSourceFile: /src/casync/src/caorigin.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t ca_origin_bytes(CaOrigin *origin)
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 1
    argNames:
    - u
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 41
    functionName: ca_protocol_type_name
    functionSourceFile: /src/casync/src/caprotocol-util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ca_protocol_type_name(uint64_t u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caindex.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex*
    assertStmts:
    - condition: (i)
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/casync/src/caindex.c
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: CA_INDEX_METADATA_SIZE
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t CA_INDEX_METADATA_SIZE(CaIndex *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/caindex.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 73
    functionName: ca_index_new
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaIndex
    signature: CaIndex * ca_index_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_new
      Src: /src/casync/src/caindex.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 87
    functionName: ca_index_new_write
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_new
    linkageType: ''
    returnType: CaIndex
    signature: CaIndex *ca_index_new_write(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_new
      Src: /src/casync/src/caindex.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 101
    functionName: ca_index_new_read
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 2
    functionsReached:
    - ca_index_new
    linkageType: ''
    returnType: CaIndex
    signature: CaIndex *ca_index_new_read(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_new
      Src: /src/casync/src/caindex.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 115
    functionName: ca_index_new_incremental_write
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_new
    linkageType: ''
    returnType: CaIndex
    signature: CaIndex *ca_index_new_incremental_write(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_new
      Src: /src/casync/src/caindex.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 129
    functionName: ca_index_new_incremental_read
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_new
    linkageType: ''
    returnType: CaIndex
    signature: CaIndex *ca_index_new_incremental_read(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/casync/src/caindex.c:135,1
    - Dst: unlink
      Src: /src/casync/src/caindex.c:138,1
    - Dst: free
      Src: /src/casync/src/caindex.c:139,1
    - Dst: safe_close
      Src: /src/casync/src/caindex.c:143,1
    - Dst: mfree
      Src: /src/casync/src/caindex.c:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 146
    functionName: ca_index_unref
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - safe_close
    - mfree
    - unlink
    - free
    linkageType: ''
    returnType: CaIndex
    signature: CaIndex *ca_index_unref(CaIndex *i)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - i
    - m
    argTypes:
    - CaIndex*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 161
    functionName: ca_index_set_make_mode
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_index_set_make_mode(CaIndex *i, mode_t m)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - i
    - fd
    argTypes:
    - CaIndex*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 173
    functionName: ca_index_set_fd
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_index_set_fd(CaIndex *i, int fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/casync/src/caindex.c:183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - i
    - path
    argTypes:
    - CaIndex*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 188
    functionName: ca_index_set_path
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 2
    functionsReached:
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_index_set_path(CaIndex *i, const char *path)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caindex.c:194,1
    - Dst: tempfn_random
      Src: /src/casync/src/caindex.c:214,1
    - Dst: var_tmp_dir
      Src: /src/casync/src/caindex.c:220,1
    - Dst: asprintf
      Src: /src/casync/src/caindex.c:224,1
    - Dst: random_u64
      Src: /src/casync/src/caindex.c:224,1
    - Dst: assert
      Src: /src/casync/src/caindex.c:233,1
    - Dst: open
      Src: /src/casync/src/caindex.c:236,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex*
    assertStmts:
    - condition: (i)
      pos:
        line_end: 193
        line_start: 193
        source_file: /src/casync/src/caindex.c
    - condition: (false)
      pos:
        line_end: 232
        line_start: 232
        source_file: /src/casync/src/caindex.c
    constantsTouched: []
    func_position:
      end: 241
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 241
    functionName: ca_index_open_fd
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - random_u64
    - tempfn_random
    - var_tmp_dir
    - asprintf
    - assert
    - open
    linkageType: ''
    returnType: int
    signature: int ca_index_open_fd(CaIndex *i)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: htole64
      Src: /src/casync/src/caindex.c:249,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:250,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:251,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:252,1
    - Dst: assert
      Src: /src/casync/src/caindex.c:256,1
    - Dst: IN_SET
      Src: /src/casync/src/caindex.c:258,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:275,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:277,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:278,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:279,1
    - Dst: assert
      Src: /src/casync/src/caindex.c:281,1
    - Dst: loop_write
      Src: /src/casync/src/caindex.c:283,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex*
    assertStmts:
    - condition: (i)
      pos:
        line_end: 255
        line_start: 255
        source_file: /src/casync/src/caindex.c
    - condition: (i->cooked_offset == 0)
      pos:
        line_end: 280
        line_start: 280
        source_file: /src/casync/src/caindex.c
    constantsTouched: []
    func_position:
      end: 290
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 290
    functionName: ca_index_write_head
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - htole64
    - assert
    - loop_write
    - IN_SET
    linkageType: ''
    returnType: int
    signature: int ca_index_write_head(CaIndex *i)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caindex.c:295,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - i
    - n
    argTypes:
    - CaIndex*
    - size_t
    assertStmts:
    - condition: (i)
      pos:
        line_end: 294
        line_start: 294
        source_file: /src/casync/src/caindex.c
    constantsTouched: []
    func_position:
      end: 312
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 312
    functionName: ca_index_enough_data
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_index_enough_data(CaIndex *i, size_t n)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caindex.c:322,1
    - Dst: IN_SET
      Src: /src/casync/src/caindex.c:324,1
    - Dst: assert
      Src: /src/casync/src/caindex.c:329,1
    - Dst: ca_index_enough_data
      Src: /src/casync/src/caindex.c:331,1
    - Dst: loop_read
      Src: /src/casync/src/caindex.c:337,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:343,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:344,1
    - Dst: ca_feature_flags_are_normalized
      Src: /src/casync/src/caindex.c:347,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:347,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:353,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:354,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:357,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:358,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:361,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:362,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:365,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:365,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:366,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:366,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:369,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:370,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:375,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:377,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:378,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:379,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 40
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex*
    assertStmts:
    - condition: (i->cooked_offset == 0)
      pos:
        line_end: 328
        line_start: 328
        source_file: /src/casync/src/caindex.c
    - condition: (i)
      pos:
        line_end: 321
        line_start: 321
        source_file: /src/casync/src/caindex.c
    constantsTouched: []
    func_position:
      end: 382
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 382
    functionName: ca_index_read_head
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - le64toh
    - IN_SET
    - ca_feature_flags_are_normalized
    - ca_index_enough_data
    - assert
    - loop_read
    linkageType: ''
    returnType: int
    signature: int ca_index_read_head(CaIndex *i)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_open_fd
      Src: /src/casync/src/caindex.c:390,1
    - Dst: ca_index_read_head
      Src: /src/casync/src/caindex.c:394,1
    - Dst: ca_index_write_head
      Src: /src/casync/src/caindex.c:398,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 384
    functionDepth: 2
    functionLinenumber: 384
    functionLinenumberEnd: 403
    functionName: ca_index_open
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 2
    functionsReached:
    - ca_index_write_head
    - ca_index_open_fd
    - ca_index_read_head
    linkageType: ''
    returnType: int
    signature: int ca_index_open(CaIndex *i)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caindex.c:406,1
    - Dst: IN_SET
      Src: /src/casync/src/caindex.c:408,1
    - Dst: rename
      Src: /src/casync/src/caindex.c:418,1
    - Dst: mfree
      Src: /src/casync/src/caindex.c:421,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex*
    assertStmts:
    - condition: (i)
      pos:
        line_end: 405
        line_start: 405
        source_file: /src/casync/src/caindex.c
    constantsTouched: []
    func_position:
      end: 423
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 423
    functionName: ca_index_install
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - assert
    - rename
    - mfree
    - IN_SET
    linkageType: ''
    returnType: int
    signature: int ca_index_install(CaIndex *i)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/caindex.c:436,1
    - Dst: ca_index_open
      Src: /src/casync/src/caindex.c:441,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:457,1
    - Dst: memcpy
      Src: /src/casync/src/caindex.c:458,1
    - Dst: loop_write
      Src: /src/casync/src/caindex.c:460,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - i
    - id
    - size
    argTypes:
    - CaIndex*
    - CaChunkID*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 425
    functionDepth: 3
    functionLinenumber: 425
    functionLinenumberEnd: 469
    functionName: ca_index_write_chunk
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_open
    - htole64
    - loop_write
    - memcpy
    - IN_SET
    linkageType: ''
    returnType: int
    signature: int ca_index_write_chunk(CaIndex *i, const CaChunkID *id, uint64_t
      size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caindex.c:475,1
    - Dst: IN_SET
      Src: /src/casync/src/caindex.c:479,1
    - Dst: ca_index_open
      Src: /src/casync/src/caindex.c:484,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:488,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:489,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:492,1
    - Dst: loop_write
      Src: /src/casync/src/caindex.c:494,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex*
    assertStmts:
    - condition: (sizeof(CaFormatTableTail) == sizeof(CaFormatTableItem))
      pos:
        line_end: 474
        line_start: 474
        source_file: /src/casync/src/caindex.c
    constantsTouched: []
    func_position:
      end: 503
      start: 471
    functionDepth: 3
    functionLinenumber: 471
    functionLinenumberEnd: 503
    functionName: ca_index_write_eof
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_open
    - htole64
    - loop_write
    - IN_SET
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_index_write_eof(CaIndex *i)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caindex.c:513,1
    - Dst: ca_index_open
      Src: /src/casync/src/caindex.c:518,1
    - Dst: IN_SET
      Src: /src/casync/src/caindex.c:522,1
    - Dst: ca_index_enough_data
      Src: /src/casync/src/caindex.c:525,1
    - Dst: loop_read
      Src: /src/casync/src/caindex.c:531,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:543,1
    - Dst: htole64
      Src: /src/casync/src/caindex.c:546,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:547,1
    - Dst: read
      Src: /src/casync/src/caindex.c:551,1
    - Dst: memset
      Src: /src/casync/src/caindex.c:558,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:570,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:574,1
    - Dst: memcpy
      Src: /src/casync/src/caindex.c:578,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:581,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:584,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:586,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 47
    argCount: 4
    argNames:
    - i
    - ret_id
    - ret_offset_end
    - ret_size
    argTypes:
    - CaIndex*
    - CaChunkID*
    - uint64_t*
    - uint64_t*
    assertStmts:
    - condition: (sizeof(CaFormatTableTail) == sizeof(CaFormatTableItem))
      pos:
        line_end: 512
        line_start: 512
        source_file: /src/casync/src/caindex.c
    constantsTouched: []
    func_position:
      end: 592
      start: 505
    functionDepth: 3
    functionLinenumber: 505
    functionLinenumberEnd: 592
    functionName: ca_index_read_chunk
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 2
    functionsReached:
    - ca_index_open
    - htole64
    - le64toh
    - IN_SET
    - memcpy
    - memset
    - read
    - ca_index_enough_data
    - assert
    - loop_read
    linkageType: ''
    returnType: int
    signature: int ca_index_read_chunk(CaIndex *i, CaChunkID *ret_id, uint64_t *ret_offset_end,
      uint64_t *ret_size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/caindex.c:599,1
    - Dst: lseek
      Src: /src/casync/src/caindex.c:612,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - i
    - position
    argTypes:
    - CaIndex*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 594
    functionDepth: 1
    functionLinenumber: 594
    functionLinenumberEnd: 620
    functionName: ca_index_set_position
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - lseek
    - IN_SET
    linkageType: ''
    returnType: int
    signature: int ca_index_set_position(CaIndex *i, uint64_t position)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - i
    - ret
    argTypes:
    - CaIndex*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 633
    functionName: ca_index_get_position
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_index_get_position(CaIndex *i, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caindex.c:638,1
    - Dst: fstat
      Src: /src/casync/src/caindex.c:643,1
    - Dst: S_ISREG
      Src: /src/casync/src/caindex.c:646,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex*
    assertStmts:
    - condition: (i)
      pos:
        line_end: 637
        line_start: 637
        source_file: /src/casync/src/caindex.c
    constantsTouched: []
    func_position:
      end: 652
      start: 635
    functionDepth: 0
    functionLinenumber: 635
    functionLinenumberEnd: 652
    functionName: read_file_size
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - assert
    - S_ISREG
    - fstat
    linkageType: ''
    returnType: int
    signature: int read_file_size(CaIndex *i)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_read_head
      Src: /src/casync/src/caindex.c:663,1
    - Dst: read_file_size
      Src: /src/casync/src/caindex.c:672,1
    - Dst: CA_INDEX_METADATA_SIZE
      Src: /src/casync/src/caindex.c:683,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 2
    argNames:
    - i
    - ret
    argTypes:
    - CaIndex*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 654
    functionDepth: 2
    functionLinenumber: 654
    functionLinenumberEnd: 700
    functionName: ca_index_get_available_chunks
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - read_file_size
    - ca_index_read_head
    - CA_INDEX_METADATA_SIZE
    linkageType: ''
    returnType: int
    signature: int ca_index_get_available_chunks(CaIndex *i, uint64_t *ret)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_open
      Src: /src/casync/src/caindex.c:719,1
    - Dst: pwrite
      Src: /src/casync/src/caindex.c:727,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 3
    argNames:
    - i
    - data
    - size
    argTypes:
    - CaIndex*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 702
    functionDepth: 3
    functionLinenumber: 702
    functionLinenumberEnd: 735
    functionName: ca_index_incremental_write
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_open
    - pwrite
    linkageType: ''
    returnType: int
    signature: int ca_index_incremental_write(CaIndex *i, const void *data, size_t
      size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_open
      Src: /src/casync/src/caindex.c:748,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 737
    functionDepth: 3
    functionLinenumber: 737
    functionLinenumberEnd: 754
    functionName: ca_index_incremental_eof
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_open
    linkageType: ''
    returnType: int
    signature: int ca_index_incremental_eof(CaIndex *i)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_open
      Src: /src/casync/src/caindex.c:770,1
    - Dst: MIN
      Src: /src/casync/src/caindex.c:777,1
    - Dst: realloc_buffer_acquire
      Src: /src/casync/src/caindex.c:779,1
    - Dst: pread
      Src: /src/casync/src/caindex.c:783,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caindex.c:785,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/caindex.c:789,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - i
    - buffer
    argTypes:
    - CaIndex*
    - ReallocBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 756
    functionDepth: 3
    functionLinenumber: 756
    functionLinenumberEnd: 795
    functionName: ca_index_incremental_read
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_open
    - pread
    - realloc_buffer_acquire
    - realloc_buffer_empty
    - realloc_buffer_shorten
    - MIN
    linkageType: ''
    returnType: int
    signature: int ca_index_incremental_read(CaIndex *i, ReallocBuffer *buffer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/caindex.c:804,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - i
    - cmin
    argTypes:
    - CaIndex*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 809
    functionName: ca_index_set_chunk_size_min
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - IN_SET
    linkageType: ''
    returnType: int
    signature: int ca_index_set_chunk_size_min(CaIndex *i, size_t cmin)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/caindex.c:818,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - i
    - cavg
    argTypes:
    - CaIndex*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 811
    functionDepth: 1
    functionLinenumber: 811
    functionLinenumberEnd: 823
    functionName: ca_index_set_chunk_size_avg
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - IN_SET
    linkageType: ''
    returnType: int
    signature: int ca_index_set_chunk_size_avg(CaIndex *i, size_t cavg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/caindex.c:832,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - i
    - cmax
    argTypes:
    - CaIndex*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 825
    functionDepth: 1
    functionLinenumber: 825
    functionLinenumberEnd: 837
    functionName: ca_index_set_chunk_size_max
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - IN_SET
    linkageType: ''
    returnType: int
    signature: int ca_index_set_chunk_size_max(CaIndex *i, size_t cmax)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - i
    - ret
    argTypes:
    - CaIndex*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 849
    functionName: ca_index_get_chunk_size_min
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_index_get_chunk_size_min(CaIndex *i, size_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - i
    - ret
    argTypes:
    - CaIndex*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 851
    functionDepth: 0
    functionLinenumber: 851
    functionLinenumberEnd: 861
    functionName: ca_index_get_chunk_size_avg
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_index_get_chunk_size_avg(CaIndex *i, size_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - i
    - ret
    argTypes:
    - CaIndex*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 863
    functionDepth: 0
    functionLinenumber: 863
    functionLinenumberEnd: 873
    functionName: ca_index_get_chunk_size_max
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_index_get_chunk_size_max(CaIndex *i, size_t *ret)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_open
      Src: /src/casync/src/caindex.c:884,1
    - Dst: ca_index_read_head
      Src: /src/casync/src/caindex.c:888,1
    - Dst: read_file_size
      Src: /src/casync/src/caindex.c:895,1
    - Dst: CA_INDEX_METADATA_SIZE
      Src: /src/casync/src/caindex.c:915,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 2
    argNames:
    - i
    - ret
    argTypes:
    - CaIndex*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 875
    functionDepth: 3
    functionLinenumber: 875
    functionLinenumberEnd: 924
    functionName: ca_index_get_index_size
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_open
    - read_file_size
    - ca_index_read_head
    - CA_INDEX_METADATA_SIZE
    linkageType: ''
    returnType: int
    signature: int ca_index_get_index_size(CaIndex *i, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_get_index_size
      Src: /src/casync/src/caindex.c:935,1
    - Dst: CA_INDEX_METADATA_SIZE
      Src: /src/casync/src/caindex.c:939,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - i
    - ret
    argTypes:
    - CaIndex*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 926
    functionDepth: 4
    functionLinenumber: 926
    functionLinenumberEnd: 941
    functionName: ca_index_get_total_chunks
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_get_index_size
    - CA_INDEX_METADATA_SIZE
    linkageType: ''
    returnType: int
    signature: int ca_index_get_total_chunks(CaIndex *i, uint64_t *ret)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_get_index_size
      Src: /src/casync/src/caindex.c:955,1
    - Dst: CA_INDEX_METADATA_SIZE
      Src: /src/casync/src/caindex.c:959,1
    - Dst: pread
      Src: /src/casync/src/caindex.c:962,1
    - Dst: pread
      Src: /src/casync/src/caindex.c:970,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:977,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:979,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:981,1
    - Dst: le64toh
      Src: /src/casync/src/caindex.c:984,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 943
    functionDepth: 4
    functionLinenumber: 943
    functionLinenumberEnd: 987
    functionName: ca_index_read_tail
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - le64toh
    - ca_index_get_index_size
    - pread
    - CA_INDEX_METADATA_SIZE
    linkageType: ''
    returnType: int
    signature: int ca_index_read_tail(CaIndex *i)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_read_tail
      Src: /src/casync/src/caindex.c:998,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - i
    - ret
    argTypes:
    - CaIndex*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 989
    functionDepth: 5
    functionLinenumber: 989
    functionLinenumberEnd: 1005
    functionName: ca_index_get_blob_size
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_read_tail
    linkageType: ''
    returnType: int
    signature: int ca_index_get_blob_size(CaIndex *i, uint64_t *ret)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_get_blob_size
      Src: /src/casync/src/caindex.c:1014,1
    - Dst: ca_index_get_total_chunks
      Src: /src/casync/src/caindex.c:1021,1
    - Dst: ca_index_set_position
      Src: /src/casync/src/caindex.c:1029,1
    - Dst: ca_index_set_position
      Src: /src/casync/src/caindex.c:1047,1
    - Dst: ca_index_read_chunk
      Src: /src/casync/src/caindex.c:1051,1
    - Dst: ca_index_set_position
      Src: /src/casync/src/caindex.c:1060,1
    - Dst: ca_index_read_chunk
      Src: /src/casync/src/caindex.c:1077,1
    - Dst: ca_index_set_position
      Src: /src/casync/src/caindex.c:1088,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 60
    argCount: 3
    argNames:
    - i
    - offset
    - ret_skip
    argTypes:
    - CaIndex*
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1007
    functionDepth: 6
    functionLinenumber: 1007
    functionLinenumberEnd: 1099
    functionName: ca_index_seek
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_index_set_position
    - ca_index_read_chunk
    - ca_index_get_blob_size
    - ca_index_get_total_chunks
    linkageType: ''
    returnType: int
    signature: int ca_index_seek(CaIndex *i, uint64_t offset, uint64_t *ret_skip)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/caindex.c:1105,1
    - Dst: ca_feature_flags_normalize
      Src: /src/casync/src/caindex.c:1110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - i
    - flags
    argTypes:
    - CaIndex*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1101
    functionDepth: 1
    functionLinenumber: 1101
    functionLinenumberEnd: 1111
    functionName: ca_index_set_feature_flags
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached:
    - ca_feature_flags_normalize
    - IN_SET
    linkageType: ''
    returnType: int
    signature: int ca_index_set_feature_flags(CaIndex *i, uint64_t flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - i
    - ret
    argTypes:
    - CaIndex*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1113
    functionDepth: 0
    functionLinenumber: 1113
    functionLinenumberEnd: 1124
    functionName: ca_index_get_feature_flags
    functionSourceFile: /src/casync/src/caindex.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_index_get_feature_flags(CaIndex *i, uint64_t *ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - de
    - ','
    - d
    - ','
    - on_error
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 42
    functionName: FOREACH_DIRENT_ALL
    functionSourceFile: /src/casync/src/dirent-util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_DIRENT_ALL(de, d, on_error)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 159
    functionName: CA_SYNC_IS_STARTED
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CA_SYNC_IS_STARTED(s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/casync.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 185
    functionName: ca_sync_new
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaSync
    signature: CaSync *ca_sync_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_new
      Src: /src/casync/src/casync.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 198
    functionName: ca_sync_new_encode
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_sync_new
    linkageType: ''
    returnType: CaSync
    signature: CaSync *ca_sync_new_encode(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_new
      Src: /src/casync/src/casync.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 209
    functionName: ca_sync_new_decode
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_sync_new
    linkageType: ''
    returnType: CaSync
    signature: CaSync *ca_sync_new_decode(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunker_set_size
      Src: /src/casync/src/casync.c:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - s
    - v
    argTypes:
    - CaSync*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 223
    functionName: ca_sync_set_chunk_size_min
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_chunker_set_size
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_chunk_size_min(CaSync *s, uint64_t v)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunker_set_size
      Src: /src/casync/src/casync.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - s
    - v
    argTypes:
    - CaSync*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 237
    functionName: ca_sync_set_chunk_size_avg
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_chunker_set_size
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_chunk_size_avg(CaSync *s, uint64_t v)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunker_set_size
      Src: /src/casync/src/casync.c:245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - s
    - v
    argTypes:
    - CaSync*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 251
    functionName: ca_sync_set_chunk_size_max
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_chunker_set_size
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_chunk_size_max(CaSync *s, uint64_t v)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 261
    functionName: ca_sync_get_chunk_size_avg
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_chunk_size_avg(CaSync *s, uint64_t *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 271
    functionName: ca_sync_get_chunk_size_min
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_chunk_size_min(CaSync *s, uint64_t *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 281
    functionName: ca_sync_get_chunk_size_max
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_chunk_size_max(CaSync *s, uint64_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_set_punch_holes
      Src: /src/casync/src/casync.c:292,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - s
    - enabled
    argTypes:
    - CaSync*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 300
    functionName: ca_sync_set_punch_holes
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_set_punch_holes
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_punch_holes(CaSync *s, bool enabled)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_set_reflink
      Src: /src/casync/src/casync.c:311,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - s
    - enabled
    argTypes:
    - CaSync*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 319
    functionName: ca_sync_set_reflink
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_set_reflink
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_reflink(CaSync *s, bool enabled)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_enable_hardlink_digest
      Src: /src/casync/src/casync.c:330,1
    - Dst: ca_decoder_set_hardlink
      Src: /src/casync/src/casync.c:334,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - enabled
    argTypes:
    - CaSync*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 342
    functionName: ca_sync_set_hardlink
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_set_hardlink
    - ca_decoder_enable_hardlink_digest
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_hardlink(CaSync *s, bool enabled)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_set_delete
      Src: /src/casync/src/casync.c:353,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - s
    - enabled
    argTypes:
    - CaSync*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 361
    functionName: ca_sync_set_delete
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_set_delete
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_delete(CaSync *s, bool enabled)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_set_payload
      Src: /src/casync/src/casync.c:372,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - s
    - enabled
    argTypes:
    - CaSync*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 380
    functionName: ca_sync_set_payload
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_set_payload
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_payload(CaSync *s, bool enabled)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_set_undo_immutable
      Src: /src/casync/src/casync.c:391,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - s
    - enabled
    argTypes:
    - CaSync*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 399
    functionName: ca_sync_set_undo_immutable
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_set_undo_immutable
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_undo_immutable(CaSync *s, bool enabled)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_set_uid_shift
      Src: /src/casync/src/casync.c:408,1
    - Dst: ca_encoder_set_uid_shift
      Src: /src/casync/src/casync.c:414,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - s
    - u
    argTypes:
    - CaSync*
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 421
    functionName: ca_sync_set_uid_shift
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_set_uid_shift
    - ca_decoder_set_uid_shift
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_uid_shift(CaSync *s, uid_t u)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_set_uid_range
      Src: /src/casync/src/casync.c:430,1
    - Dst: ca_encoder_set_uid_range
      Src: /src/casync/src/casync.c:436,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - s
    - u
    argTypes:
    - CaSync*
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 443
    functionName: ca_sync_set_uid_range
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_set_uid_range
    - ca_encoder_set_uid_range
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_uid_range(CaSync *s, uid_t u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:446,1
    - Dst: ca_location_unref
      Src: /src/casync/src/casync.c:449,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/casync.c:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 445
        line_start: 445
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 451
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 451
    functionName: ca_sync_reset_cache_data
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_origin_unref
    - ca_location_unref
    linkageType: ''
    returnType: void
    signature: void ca_sync_reset_cache_data(CaSync *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_unref
      Src: /src/casync/src/casync.c:459,1
    - Dst: ca_decoder_unref
      Src: /src/casync/src/casync.c:460,1
    - Dst: ca_store_unref
      Src: /src/casync/src/casync.c:462,1
    - Dst: ca_store_unref
      Src: /src/casync/src/casync.c:464,1
    - Dst: free
      Src: /src/casync/src/casync.c:465,1
    - Dst: ca_store_unref
      Src: /src/casync/src/casync.c:466,1
    - Dst: ca_remote_unref
      Src: /src/casync/src/casync.c:468,1
    - Dst: ca_remote_unref
      Src: /src/casync/src/casync.c:470,1
    - Dst: free
      Src: /src/casync/src/casync.c:471,1
    - Dst: ca_seed_unref
      Src: /src/casync/src/casync.c:474,1
    - Dst: free
      Src: /src/casync/src/casync.c:475,1
    - Dst: ca_sync_reset_cache_data
      Src: /src/casync/src/casync.c:477,1
    - Dst: ca_cache_unref
      Src: /src/casync/src/casync.c:478,1
    - Dst: safe_close
      Src: /src/casync/src/casync.c:480,1
    - Dst: safe_close
      Src: /src/casync/src/casync.c:481,1
    - Dst: safe_close
      Src: /src/casync/src/casync.c:482,1
    - Dst: free
      Src: /src/casync/src/casync.c:484,1
    - Dst: free
      Src: /src/casync/src/casync.c:485,1
    - Dst: free
      Src: /src/casync/src/casync.c:486,1
    - Dst: unlink
      Src: /src/casync/src/casync.c:489,1
    - Dst: free
      Src: /src/casync/src/casync.c:490,1
    - Dst: unlink
      Src: /src/casync/src/casync.c:493,1
    - Dst: free
      Src: /src/casync/src/casync.c:494,1
    - Dst: ca_index_unref
      Src: /src/casync/src/casync.c:497,1
    - Dst: ca_remote_unref
      Src: /src/casync/src/casync.c:498,1
    - Dst: ca_remote_unref
      Src: /src/casync/src/casync.c:500,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/casync.c:502,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/casync.c:503,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/casync.c:504,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/casync.c:505,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/casync.c:507,1
    - Dst: ca_file_root_unref
      Src: /src/casync/src/casync.c:509,1
    - Dst: ca_digest_free
      Src: /src/casync/src/casync.c:511,1
    - Dst: mfree
      Src: /src/casync/src/casync.c:513,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 44
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 453
    functionDepth: 2
    functionLinenumber: 453
    functionLinenumberEnd: 514
    functionName: ca_sync_unref
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_decoder_unref
    - mfree
    - safe_close
    - unlink
    - ca_index_unref
    - ca_seed_unref
    - ca_sync_reset_cache_data
    - ca_store_unref
    - ca_encoder_unref
    - ca_origin_unref
    - ca_remote_unref
    - ca_file_root_unref
    - ca_cache_unref
    - ca_digest_free
    - realloc_buffer_free
    - free
    linkageType: ''
    returnType: CaSync
    signature: CaSync *ca_sync_unref(CaSync *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - s
    - log_level
    argTypes:
    - CaSync*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 523
    functionName: ca_sync_set_log_level
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_log_level(CaSync *s, int log_level)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - s
    - rate_limit_bps
    argTypes:
    - CaSync*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 532
    functionName: ca_sync_set_rate_limit_bps
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_rate_limit_bps(CaSync *s, uint64_t rate_limit_bps)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_feature_flags_normalize
      Src: /src/casync/src/casync.c:543,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - s
    - flags
    argTypes:
    - CaSync*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 544
    functionName: ca_sync_set_feature_flags
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_feature_flags_normalize
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_feature_flags(CaSync *s, uint64_t flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_get_feature_flags
      Src: /src/casync/src/casync.c:556,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 560
    functionName: ca_sync_get_feature_flags
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_get_feature_flags
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_feature_flags(CaSync *s, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_get_covering_feature_flags
      Src: /src/casync/src/casync.c:571,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 572
    functionName: ca_sync_get_covering_feature_flags
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_get_covering_feature_flags
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_covering_feature_flags(CaSync *s, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_feature_flags_normalize_mask
      Src: /src/casync/src/casync.c:583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - s
    - mask
    argTypes:
    - CaSync*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 574
    functionDepth: 1
    functionLinenumber: 574
    functionLinenumberEnd: 584
    functionName: ca_sync_set_feature_flags_mask
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_feature_flags_normalize_mask
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_feature_flags_mask(CaSync *s, uint64_t mask)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:587,1
    - Dst: ca_index_new_write
      Src: /src/casync/src/casync.c:595,1
    - Dst: ca_index_new_read
      Src: /src/casync/src/casync.c:597,1
    - Dst: assert
      Src: /src/casync/src/casync.c:599,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 586
        line_start: 586
        source_file: /src/casync/src/casync.c
    - condition: (false)
      pos:
        line_end: 598
        line_start: 598
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 605
      start: 586
    functionDepth: 3
    functionLinenumber: 586
    functionLinenumberEnd: 605
    functionName: ca_sync_allocate_index
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_index_new_read
    - ca_index_new_write
    linkageType: ''
    returnType: int
    signature: int ca_sync_allocate_index(CaSync *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_allocate_index
      Src: /src/casync/src/casync.c:615,1
    - Dst: ca_index_set_fd
      Src: /src/casync/src/casync.c:619,1
    - Dst: ca_index_unref
      Src: /src/casync/src/casync.c:621,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - s
    - fd
    argTypes:
    - CaSync*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 607
    functionDepth: 4
    functionLinenumber: 607
    functionLinenumberEnd: 626
    functionName: ca_sync_set_index_fd
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_index_set_fd
    - ca_sync_allocate_index
    - ca_index_unref
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_index_fd(CaSync *s, int fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_allocate_index
      Src: /src/casync/src/casync.c:636,1
    - Dst: ca_index_set_path
      Src: /src/casync/src/casync.c:640,1
    - Dst: ca_index_unref
      Src: /src/casync/src/casync.c:642,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 628
    functionDepth: 4
    functionLinenumber: 628
    functionLinenumberEnd: 647
    functionName: ca_sync_set_index_path
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_index_unref
    - ca_sync_allocate_index
    - ca_index_set_path
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_index_path(CaSync *s, const char *path)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_set_index_url
      Src: /src/casync/src/casync.c:668,1
    - Dst: ca_remote_add_local_feature_flags
      Src: /src/casync/src/casync.c:670,1
    - Dst: ca_remote_ref
      Src: /src/casync/src/casync.c:674,1
    - Dst: ca_remote_new
      Src: /src/casync/src/casync.c:681,1
    - Dst: ca_remote_set_log_level
      Src: /src/casync/src/casync.c:686,1
    - Dst: ca_remote_set_rate_limit_bps
      Src: /src/casync/src/casync.c:692,1
    - Dst: ca_remote_set_index_url
      Src: /src/casync/src/casync.c:697,1
    - Dst: ca_remote_set_local_feature_flags
      Src: /src/casync/src/casync.c:701,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 2
    argNames:
    - s
    - url
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 649
    functionDepth: 1
    functionLinenumber: 649
    functionLinenumberEnd: 706
    functionName: ca_sync_set_index_remote
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_remote_set_index_url
    - ca_remote_add_local_feature_flags
    - ca_remote_new
    - ca_remote_set_local_feature_flags
    - ca_remote_set_log_level
    - ca_remote_set_rate_limit_bps
    - ca_remote_ref
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_index_remote(CaSync *s, const char *url)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_classify_locator
      Src: /src/casync/src/casync.c:716,1
    - Dst: ca_sync_set_index_path
      Src: /src/casync/src/casync.c:721,1
    - Dst: ca_sync_set_index_remote
      Src: /src/casync/src/casync.c:723,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - locator
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 708
    functionDepth: 5
    functionLinenumber: 708
    functionLinenumberEnd: 724
    functionName: ca_sync_set_index_auto
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_set_index_remote
    - ca_sync_set_index_path
    - ca_classify_locator
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_index_auto(CaSync *s, const char *locator)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - s
    - fd
    argTypes:
    - CaSync*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 745
    functionName: ca_sync_set_base_fd
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_base_fd(CaSync *s, int fd)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: S_ISDIR
      Src: /src/casync/src/casync.c:762,1
    - Dst: open
      Src: /src/casync/src/casync.c:764,1
    - Dst: open
      Src: /src/casync/src/casync.c:774,1
    - Dst: assert
      Src: /src/casync/src/casync.c:781,1
    - Dst: strdup
      Src: /src/casync/src/casync.c:783,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - CaSync*
    - char*
    assertStmts:
    - condition: (s->direction == CA_SYNC_DECODE)
      pos:
        line_end: 780
        line_start: 780
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 788
      start: 747
    functionDepth: 0
    functionLinenumber: 747
    functionLinenumberEnd: 788
    functionName: ca_sync_set_base_path
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - S_ISDIR
    - assert
    - strdup
    - open
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_base_path(CaSync *s, const char *path)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - m
    argTypes:
    - CaSync*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 790
    functionDepth: 0
    functionLinenumber: 790
    functionLinenumberEnd: 803
    functionName: ca_sync_set_make_mode
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_make_mode(CaSync *s, mode_t m)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: S_ISREG
      Src: /src/casync/src/casync.c:810,1
    - Dst: S_ISDIR
      Src: /src/casync/src/casync.c:810,1
    - Dst: S_ISBLK
      Src: /src/casync/src/casync.c:810,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 2
    argNames:
    - s
    - m
    argTypes:
    - CaSync*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 805
    functionDepth: 0
    functionLinenumber: 805
    functionLinenumberEnd: 826
    functionName: ca_sync_set_base_mode
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - S_ISDIR
    - S_ISREG
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_base_mode(CaSync *s, mode_t m)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - s
    - fd
    argTypes:
    - CaSync*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 828
    functionDepth: 0
    functionLinenumber: 828
    functionLinenumberEnd: 850
    functionName: ca_sync_set_boundary_fd
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_boundary_fd(CaSync *s, int fd)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/casync/src/casync.c:872,1
    - Dst: strdup
      Src: /src/casync/src/casync.c:879,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 2
    argNames:
    - s
    - p
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 852
    functionDepth: 0
    functionLinenumber: 852
    functionLinenumberEnd: 884
    functionName: ca_sync_set_boundary_path
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - strdup
    - open
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_boundary_path(CaSync *s, const char *p)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - s
    - fd
    argTypes:
    - CaSync*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 886
    functionDepth: 0
    functionLinenumber: 886
    functionLinenumberEnd: 901
    functionName: ca_sync_set_archive_fd
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_archive_fd(CaSync *s, int fd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/casync/src/casync.c:917,1
    - Dst: assert
      Src: /src/casync/src/casync.c:924,1
    - Dst: open
      Src: /src/casync/src/casync.c:926,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - CaSync*
    - char*
    assertStmts:
    - condition: (s->direction == CA_SYNC_DECODE)
      pos:
        line_end: 923
        line_start: 923
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 931
      start: 903
    functionDepth: 0
    functionLinenumber: 903
    functionLinenumberEnd: 931
    functionName: ca_sync_set_archive_path
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - open
    - assert
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_archive_path(CaSync *s, const char *path)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_new
      Src: /src/casync/src/casync.c:948,1
    - Dst: ca_remote_set_archive_url
      Src: /src/casync/src/casync.c:952,1
    - Dst: ca_remote_set_local_feature_flags
      Src: /src/casync/src/casync.c:956,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - s
    - url
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 933
    functionDepth: 1
    functionLinenumber: 933
    functionLinenumberEnd: 962
    functionName: ca_sync_set_archive_remote
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_remote_new
    - ca_remote_set_local_feature_flags
    - ca_remote_set_archive_url
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_archive_remote(CaSync *s, const char *url)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_classify_locator
      Src: /src/casync/src/casync.c:972,1
    - Dst: ca_sync_set_archive_path
      Src: /src/casync/src/casync.c:977,1
    - Dst: ca_sync_set_archive_remote
      Src: /src/casync/src/casync.c:979,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - locator
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 964
    functionDepth: 2
    functionLinenumber: 964
    functionLinenumberEnd: 980
    functionName: ca_sync_set_archive_auto
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_set_archive_path
    - ca_sync_set_archive_remote
    - ca_classify_locator
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_archive_auto(CaSync *s, const char *locator)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_store_new
      Src: /src/casync/src/casync.c:995,1
    - Dst: ca_store_set_path
      Src: /src/casync/src/casync.c:999,1
    - Dst: ca_store_unref
      Src: /src/casync/src/casync.c:1001,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 982
    functionDepth: 1
    functionLinenumber: 982
    functionLinenumberEnd: 1006
    functionName: ca_sync_set_store_path
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_store_set_path
    - ca_store_new
    - ca_store_unref
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_store_path(CaSync *s, const char *path)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_set_store_url
      Src: /src/casync/src/casync.c:1027,1
    - Dst: ca_remote_add_local_feature_flags
      Src: /src/casync/src/casync.c:1030,1
    - Dst: ca_remote_ref
      Src: /src/casync/src/casync.c:1034,1
    - Dst: ca_remote_new
      Src: /src/casync/src/casync.c:1041,1
    - Dst: ca_remote_set_rate_limit_bps
      Src: /src/casync/src/casync.c:1046,1
    - Dst: ca_remote_set_store_url
      Src: /src/casync/src/casync.c:1051,1
    - Dst: ca_remote_set_local_feature_flags
      Src: /src/casync/src/casync.c:1055,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 2
    argNames:
    - s
    - url
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1008
    functionDepth: 1
    functionLinenumber: 1008
    functionLinenumberEnd: 1060
    functionName: ca_sync_set_store_remote
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_remote_add_local_feature_flags
    - ca_remote_set_store_url
    - ca_remote_new
    - ca_remote_set_local_feature_flags
    - ca_remote_set_rate_limit_bps
    - ca_remote_ref
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_store_remote(CaSync *s, const char *url)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_classify_locator
      Src: /src/casync/src/casync.c:1070,1
    - Dst: ca_sync_set_store_path
      Src: /src/casync/src/casync.c:1075,1
    - Dst: ca_sync_set_store_remote
      Src: /src/casync/src/casync.c:1077,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - locator
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1062
    functionDepth: 2
    functionLinenumber: 1062
    functionLinenumberEnd: 1078
    functionName: ca_sync_set_store_auto
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_set_store_path
    - ca_classify_locator
    - ca_sync_set_store_remote
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_store_auto(CaSync *s, const char *locator)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_store_new
      Src: /src/casync/src/casync.c:1089,1
    - Dst: ca_store_set_path
      Src: /src/casync/src/casync.c:1093,1
    - Dst: ca_store_unref
      Src: /src/casync/src/casync.c:1095,1
    - Dst: realloc_multiply
      Src: /src/casync/src/casync.c:1099,1
    - Dst: ca_store_unref
      Src: /src/casync/src/casync.c:1101,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1080
    functionDepth: 1
    functionLinenumber: 1080
    functionLinenumberEnd: 1109
    functionName: ca_sync_add_store_path
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_store_set_path
    - ca_store_new
    - ca_store_unref
    - realloc_multiply
    linkageType: ''
    returnType: int
    signature: int ca_sync_add_store_path(CaSync *s, const char *path)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_new
      Src: /src/casync/src/casync.c:1120,1
    - Dst: ca_remote_set_store_url
      Src: /src/casync/src/casync.c:1124,1
    - Dst: ca_remote_unref
      Src: /src/casync/src/casync.c:1126,1
    - Dst: realloc_multiply
      Src: /src/casync/src/casync.c:1130,1
    - Dst: ca_remote_unref
      Src: /src/casync/src/casync.c:1132,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - s
    - url
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1111
    functionDepth: 1
    functionLinenumber: 1111
    functionLinenumberEnd: 1140
    functionName: ca_sync_add_store_remote
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_remote_new
    - ca_remote_set_store_url
    - realloc_multiply
    - ca_remote_unref
    linkageType: ''
    returnType: int
    signature: int ca_sync_add_store_remote(CaSync *s, const char *url)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_classify_locator
      Src: /src/casync/src/casync.c:1150,1
    - Dst: ca_sync_add_store_path
      Src: /src/casync/src/casync.c:1155,1
    - Dst: ca_sync_add_store_remote
      Src: /src/casync/src/casync.c:1157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - locator
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1142
    functionDepth: 2
    functionLinenumber: 1142
    functionLinenumberEnd: 1158
    functionName: ca_sync_add_store_auto
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_add_store_remote
    - ca_classify_locator
    - ca_sync_add_store_path
    linkageType: ''
    returnType: int
    signature: int ca_sync_add_store_auto(CaSync *s, const char *locator)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1163,1
    - Dst: realloc_multiply
      Src: /src/casync/src/casync.c:1165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1162
        line_start: 1162
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1171
      start: 1160
    functionDepth: 1
    functionLinenumber: 1160
    functionLinenumberEnd: 1171
    functionName: ca_sync_extend_seeds_array
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - realloc_multiply
    linkageType: ''
    returnType: int
    signature: int ca_sync_extend_seeds_array(CaSync *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_extend_seeds_array
      Src: /src/casync/src/casync.c:1182,1
    - Dst: ca_seed_new
      Src: /src/casync/src/casync.c:1186,1
    - Dst: ca_seed_set_base_fd
      Src: /src/casync/src/casync.c:1190,1
    - Dst: ca_seed_unref
      Src: /src/casync/src/casync.c:1192,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - s
    - fd
    argTypes:
    - CaSync*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1173
    functionDepth: 2
    functionLinenumber: 1173
    functionLinenumberEnd: 1198
    functionName: ca_sync_add_seed_fd
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_seed_unref
    - ca_seed_new
    - ca_sync_extend_seeds_array
    - ca_seed_set_base_fd
    linkageType: ''
    returnType: int
    signature: int ca_sync_add_seed_fd(CaSync *s, int fd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_extend_seeds_array
      Src: /src/casync/src/casync.c:1209,1
    - Dst: ca_seed_new
      Src: /src/casync/src/casync.c:1213,1
    - Dst: ca_seed_set_base_path
      Src: /src/casync/src/casync.c:1217,1
    - Dst: ca_seed_unref
      Src: /src/casync/src/casync.c:1219,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1200
    functionDepth: 2
    functionLinenumber: 1200
    functionLinenumberEnd: 1225
    functionName: ca_sync_add_seed_path
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_seed_unref
    - ca_seed_new
    - ca_sync_extend_seeds_array
    - ca_seed_set_base_path
    linkageType: ''
    returnType: int
    signature: int ca_sync_add_seed_path(CaSync *s, const char *path)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync.c:1228,1
    - Dst: ca_cache_new
      Src: /src/casync/src/casync.c:1239,1
    - Dst: ca_cache_set_fd
      Src: /src/casync/src/casync.c:1243,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - s
    - fd
    argTypes:
    - CaSync*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1227
    functionDepth: 1
    functionLinenumber: 1227
    functionLinenumberEnd: 1251
    functionName: ca_sync_set_cache_fd
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_cache_set_fd
    - ca_cache_new
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_cache_fd(CaSync *s, int fd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync.c:1255,1
    - Dst: ca_cache_new
      Src: /src/casync/src/casync.c:1266,1
    - Dst: ca_cache_set_path
      Src: /src/casync/src/casync.c:1270,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1253
    functionDepth: 1
    functionLinenumber: 1253
    functionLinenumberEnd: 1278
    functionName: ca_sync_set_cache_path
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_cache_set_path
    - ca_cache_new
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_cache_path(CaSync *s, const char *path)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1281,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1280
        line_start: 1280
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1299
      start: 1280
    functionDepth: 0
    functionLinenumber: 1280
    functionLinenumberEnd: 1299
    functionName: ca_sync_use_cache
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool ca_sync_use_cache(CaSync *s)
  - BBCount: 77
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1305,1
    - Dst: CA_SYNC_IS_STARTED
      Src: /src/casync/src/casync.c:1307,1
    - Dst: tempfn_random
      Src: /src/casync/src/casync.c:1312,1
    - Dst: open
      Src: /src/casync/src/casync.c:1317,1
    - Dst: mfree
      Src: /src/casync/src/casync.c:1319,1
    - Dst: ca_encoder_new
      Src: /src/casync/src/casync.c:1329,1
    - Dst: ca_encoder_set_feature_flags
      Src: /src/casync/src/casync.c:1333,1
    - Dst: ca_encoder_unref
      Src: /src/casync/src/casync.c:1335,1
    - Dst: ca_encoder_set_base_fd
      Src: /src/casync/src/casync.c:1339,1
    - Dst: ca_encoder_unref
      Src: /src/casync/src/casync.c:1341,1
    - Dst: ca_encoder_set_uid_shift
      Src: /src/casync/src/casync.c:1347,1
    - Dst: ca_encoder_set_uid_range
      Src: /src/casync/src/casync.c:1350,1
    - Dst: mkdir
      Src: /src/casync/src/casync.c:1359,1
    - Dst: open
      Src: /src/casync/src/casync.c:1362,1
    - Dst: S_ISDIR
      Src: /src/casync/src/casync.c:1372,1
    - Dst: mkdir
      Src: /src/casync/src/casync.c:1374,1
    - Dst: open
      Src: /src/casync/src/casync.c:1377,1
    - Dst: S_ISREG
      Src: /src/casync/src/casync.c:1381,1
    - Dst: tempfn_random
      Src: /src/casync/src/casync.c:1384,1
    - Dst: open
      Src: /src/casync/src/casync.c:1389,1
    - Dst: mfree
      Src: /src/casync/src/casync.c:1391,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1396,1
    - Dst: S_ISBLK
      Src: /src/casync/src/casync.c:1396,1
    - Dst: open
      Src: /src/casync/src/casync.c:1398,1
    - Dst: ca_decoder_new
      Src: /src/casync/src/casync.c:1404,1
    - Dst: ca_decoder_set_boundary_fd
      Src: /src/casync/src/casync.c:1426,1
    - Dst: ca_decoder_set_base_fd
      Src: /src/casync/src/casync.c:1434,1
    - Dst: ca_decoder_set_base_mode
      Src: /src/casync/src/casync.c:1444,1
    - Dst: ca_decoder_set_archive_size
      Src: /src/casync/src/casync.c:1450,1
    - Dst: ca_decoder_set_punch_holes
      Src: /src/casync/src/casync.c:1455,1
    - Dst: ca_decoder_set_reflink
      Src: /src/casync/src/casync.c:1458,1
    - Dst: ca_decoder_set_hardlink
      Src: /src/casync/src/casync.c:1461,1
    - Dst: ca_decoder_set_delete
      Src: /src/casync/src/casync.c:1464,1
    - Dst: ca_decoder_set_payload
      Src: /src/casync/src/casync.c:1467,1
    - Dst: ca_decoder_set_undo_immutable
      Src: /src/casync/src/casync.c:1470,1
    - Dst: ca_decoder_set_uid_shift
      Src: /src/casync/src/casync.c:1473,1
    - Dst: ca_decoder_set_uid_range
      Src: /src/casync/src/casync.c:1476,1
    - Dst: ca_decoder_set_feature_flags_mask
      Src: /src/casync/src/casync.c:1479,1
    - Dst: ca_index_new_incremental_read
      Src: /src/casync/src/casync.c:1486,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1488,1
    - Dst: ca_index_new_incremental_write
      Src: /src/casync/src/casync.c:1489,1
    - Dst: ca_store_new_cache
      Src: /src/casync/src/casync.c:1503,1
    - Dst: ca_store_set_digest_type
      Src: /src/casync/src/casync.c:1507,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/casync.c:1507,1
    - Dst: ca_store_set_compression_type
      Src: /src/casync/src/casync.c:1511,1
    - Dst: ca_remote_add_local_feature_flags
      Src: /src/casync/src/casync.c:1513,1
    - Dst: ca_encoder_enable_archive_digest
      Src: /src/casync/src/casync.c:1519,1
    - Dst: ca_encoder_enable_payload_digest
      Src: /src/casync/src/casync.c:1523,1
    - Dst: ca_encoder_enable_hardlink_digest
      Src: /src/casync/src/casync.c:1527,1
    - Dst: ca_decoder_enable_archive_digest
      Src: /src/casync/src/casync.c:1535,1
    - Dst: ca_decoder_enable_payload_digest
      Src: /src/casync/src/casync.c:1539,1
    - Dst: ca_decoder_enable_hardlink_digest
      Src: /src/casync/src/casync.c:1543,1
    - Dst: ca_index_set_feature_flags
      Src: /src/casync/src/casync.c:1553,1
    - Dst: ca_index_set_chunk_size_min
      Src: /src/casync/src/casync.c:1557,1
    - Dst: ca_index_set_chunk_size_avg
      Src: /src/casync/src/casync.c:1561,1
    - Dst: ca_index_set_chunk_size_max
      Src: /src/casync/src/casync.c:1565,1
    - Dst: ca_index_set_make_mode
      Src: /src/casync/src/casync.c:1570,1
    - Dst: ca_index_open
      Src: /src/casync/src/casync.c:1576,1
    - Dst: ca_seed_set_hardlink
      Src: /src/casync/src/casync.c:1584,1
    - Dst: ca_seed_set_chunks
      Src: /src/casync/src/casync.c:1588,1
    - Dst: ca_store_set_compression_type
      Src: /src/casync/src/casync.c:1595,1
    - Dst: ca_remote_set_compression_type
      Src: /src/casync/src/casync.c:1601,1
    - Dst: ca_cache_set_digest_type
      Src: /src/casync/src/casync.c:1607,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/casync.c:1607,1
    - Dst: ca_sync_use_cache
      Src: /src/casync/src/casync.c:1612,1
    - Dst: now
      Src: /src/casync/src/casync.c:1613,1
    CyclomaticComplexity: 92
    EdgeCount: 92
    ICount: 224
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (S_ISBLK(s->base_mode))
      pos:
        line_end: 1395
        line_start: 1395
        source_file: /src/casync/src/casync.c
    - condition: (s->direction == CA_SYNC_ENCODE)
      pos:
        line_end: 1487
        line_start: 1487
        source_file: /src/casync/src/casync.c
    - condition: (s)
      pos:
        line_end: 1304
        line_start: 1304
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1616
      start: 1301
    functionDepth: 3
    functionLinenumber: 1301
    functionLinenumberEnd: 1616
    functionName: ca_sync_start
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_set_base_fd
    - ca_encoder_enable_archive_digest
    - ca_decoder_new
    - ca_remote_add_local_feature_flags
    - ca_encoder_enable_hardlink_digest
    - ca_sync_use_cache
    - ca_decoder_set_payload
    - ca_decoder_enable_archive_digest
    - ca_index_new_incremental_write
    - tempfn_random
    - ca_seed_set_chunks
    - ca_index_set_make_mode
    - ca_index_new_incremental_read
    - ca_decoder_set_boundary_fd
    - CA_SYNC_IS_STARTED
    - ca_cache_set_digest_type
    - ca_decoder_set_feature_flags_mask
    - ca_index_set_feature_flags
    - open
    - ca_encoder_set_feature_flags
    - ca_seed_set_hardlink
    - now
    - S_ISDIR
    - ca_encoder_unref
    - S_ISBLK
    - ca_encoder_new
    - assert
    - ca_index_set_chunk_size_max
    - ca_feature_flags_to_digest_type
    - ca_decoder_set_hardlink
    - ca_store_new_cache
    - mfree
    - ca_store_set_compression_type
    - ca_index_set_chunk_size_min
    - ca_encoder_enable_payload_digest
    - ca_decoder_set_archive_size
    - S_ISREG
    - ca_decoder_set_base_mode
    - ca_decoder_set_uid_shift
    - ca_decoder_set_reflink
    - ca_encoder_set_uid_range
    - ca_decoder_set_uid_range
    - ca_index_open
    - ca_index_set_chunk_size_avg
    - ca_remote_set_compression_type
    - ca_store_set_digest_type
    - mkdir
    - ca_decoder_set_punch_holes
    - ca_decoder_enable_payload_digest
    - ca_encoder_set_base_fd
    - ca_decoder_enable_hardlink_digest
    - ca_encoder_set_uid_shift
    - ca_decoder_set_delete
    - ca_decoder_set_undo_immutable
    linkageType: ''
    returnType: int
    signature: int ca_sync_start(CaSync *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1619,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1620,1
    - Dst: loop_write
      Src: /src/casync/src/casync.c:1625,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - s
    - p
    - l
    argTypes:
    - CaSync*
    - void*
    - size_t
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1618
        line_start: 1618
        source_file: /src/casync/src/casync.c
    - condition: (p || l == 0)
      pos:
        line_end: 1619
        line_start: 1619
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1626
      start: 1618
    functionDepth: 1
    functionLinenumber: 1618
    functionLinenumberEnd: 1626
    functionName: ca_sync_write_archive
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - loop_write
    linkageType: ''
    returnType: int
    signature: int ca_sync_write_archive(CaSync *s, const void *p, size_t l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1629,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1630,1
    - Dst: ca_remote_put_archive
      Src: /src/casync/src/casync.c:1635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - s
    - p
    - l
    argTypes:
    - CaSync*
    - void*
    - size_t
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1628
        line_start: 1628
        source_file: /src/casync/src/casync.c
    - condition: (p || l == 0)
      pos:
        line_end: 1629
        line_start: 1629
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1636
      start: 1628
    functionDepth: 1
    functionLinenumber: 1628
    functionLinenumberEnd: 1636
    functionName: ca_sync_write_remote_archive
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_remote_put_archive
    linkageType: ''
    returnType: int
    signature: int ca_sync_write_remote_archive(CaSync *s, const void *p, size_t l)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1642,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1643,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1644,1
    - Dst: ca_origin_bytes
      Src: /src/casync/src/casync.c:1644,1
    - Dst: ca_sync_make_chunk_id
      Src: /src/casync/src/casync.c:1650,1
    - Dst: ca_store_put
      Src: /src/casync/src/casync.c:1657,1
    - Dst: ca_store_put
      Src: /src/casync/src/casync.c:1665,1
    - Dst: ca_index_write_chunk
      Src: /src/casync/src/casync.c:1671,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:1677,1
    - Dst: ca_location_format
      Src: /src/casync/src/casync.c:1677,1
    - Dst: ca_origin_get
      Src: /src/casync/src/casync.c:1677,1
    - Dst: ca_cache_put
      Src: /src/casync/src/casync.c:1679,1
    - Dst: ca_sync_use_cache
      Src: /src/casync/src/casync.c:1686,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 36
    argCount: 4
    argNames:
    - s
    - p
    - l
    - origin
    argTypes:
    - CaSync*
    - void*
    - size_t
    - CaOrigin*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1641
        line_start: 1641
        source_file: /src/casync/src/casync.c
    - condition: (p || l == 0)
      pos:
        line_end: 1642
        line_start: 1642
        source_file: /src/casync/src/casync.c
    - condition: (!origin || ca_origin_bytes(origin) == l)
      pos:
        line_end: 1643
        line_start: 1643
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1690
      start: 1638
    functionDepth: 4
    functionLinenumber: 1638
    functionLinenumberEnd: 1690
    functionName: ca_sync_write_one_chunk
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_origin_get
    - ca_sync_use_cache
    - ca_location_format
    - log_debug
    - ca_cache_put
    - ca_store_put
    - ca_index_write_chunk
    - assert
    - ca_origin_bytes
    - ca_sync_make_chunk_id
    linkageType: ''
    returnType: int
    signature: int ca_sync_write_one_chunk(CaSync *s, const void *p, size_t l, CaOrigin
      *origin)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1695,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1696,1
    - Dst: ca_origin_new
      Src: /src/casync/src/casync.c:1705,1
    - Dst: ca_origin_put
      Src: /src/casync/src/casync.c:1710,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync.c:1716,1
    - Dst: ca_chunker_scan
      Src: /src/casync/src/casync.c:1720,1
    - Dst: realloc_buffer_append
      Src: /src/casync/src/casync.c:1722,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync.c:1727,1
    - Dst: realloc_buffer_append
      Src: /src/casync/src/casync.c:1731,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/casync.c:1734,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync.c:1735,1
    - Dst: ca_origin_bytes
      Src: /src/casync/src/casync.c:1739,1
    - Dst: ca_origin_extract_bytes
      Src: /src/casync/src/casync.c:1743,1
    - Dst: ca_origin_advance_bytes
      Src: /src/casync/src/casync.c:1747,1
    - Dst: ca_sync_write_one_chunk
      Src: /src/casync/src/casync.c:1753,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/casync.c:1757,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 53
    argCount: 4
    argNames:
    - s
    - p
    - l
    - location
    argTypes:
    - CaSync*
    - void*
    - size_t
    - CaLocation*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1694
        line_start: 1694
        source_file: /src/casync/src/casync.c
    - condition: (p || l == 0)
      pos:
        line_end: 1695
        line_start: 1695
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1764
      start: 1692
    functionDepth: 5
    functionLinenumber: 1692
    functionLinenumberEnd: 1764
    functionName: ca_sync_write_chunks
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_data
    - ca_origin_extract_bytes
    - ca_chunker_scan
    - ca_origin_advance_bytes
    - ca_sync_write_one_chunk
    - realloc_buffer_empty
    - ca_origin_put
    - realloc_buffer_append
    - ca_origin_new
    - assert
    - realloc_buffer_size
    - ca_origin_bytes
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_sync_write_chunks(CaSync *s, const void *p, size_t l, CaLocation
      *location)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1769,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync.c:1774,1
    - Dst: ca_sync_write_one_chunk
      Src: /src/casync/src/casync.c:1775,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/casync.c:1775,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync.c:1775,1
    - Dst: ca_index_write_eof
      Src: /src/casync/src/casync.c:1781,1
    - Dst: ca_index_install
      Src: /src/casync/src/casync.c:1785,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1768
        line_start: 1768
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1791
      start: 1766
    functionDepth: 5
    functionLinenumber: 1766
    functionLinenumberEnd: 1791
    functionName: ca_sync_write_final_chunk
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_data
    - ca_index_write_eof
    - ca_sync_write_one_chunk
    - assert
    - ca_index_install
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_sync_write_final_chunk(CaSync *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1796,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1797,1
    - Dst: ca_index_write_chunk
      Src: /src/casync/src/casync.c:1804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - s
    - id
    - size
    - location
    argTypes:
    - CaSync*
    - CaChunkID*
    - uint64_t
    - CaLocation*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1795
        line_start: 1795
        source_file: /src/casync/src/casync.c
    - condition: (id)
      pos:
        line_end: 1796
        line_start: 1796
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1810
      start: 1793
    functionDepth: 4
    functionLinenumber: 1793
    functionLinenumberEnd: 1810
    functionName: ca_sync_write_one_cached_chunk
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_index_write_chunk
    linkageType: ''
    returnType: int
    signature: int ca_sync_write_one_cached_chunk(CaSync *s, const CaChunkID *id,
      uint64_t size, CaLocation *location)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1813,1
    - Dst: rename
      Src: /src/casync/src/casync.c:1821,1
    - Dst: mfree
      Src: /src/casync/src/casync.c:1824,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1812
        line_start: 1812
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1826
      start: 1812
    functionDepth: 1
    functionLinenumber: 1812
    functionLinenumberEnd: 1826
    functionName: ca_sync_install_archive
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - rename
    - mfree
    linkageType: ''
    returnType: int
    signature: int ca_sync_install_archive(CaSync *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1829,1
    - Dst: ca_remote_put_archive_eof
      Src: /src/casync/src/casync.c:1834,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1828
        line_start: 1828
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1835
      start: 1828
    functionDepth: 1
    functionLinenumber: 1828
    functionLinenumberEnd: 1835
    functionName: ca_sync_write_remote_archive_eof
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_remote_put_archive_eof
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_sync_write_remote_archive_eof(CaSync *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1840,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1841,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1843,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1844,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1845,1
    - Dst: ca_cache_get
      Src: /src/casync/src/casync.c:1847,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:1849,1
    - Dst: ca_location_format
      Src: /src/casync/src/casync.c:1849,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:1854,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:1856,1
    - Dst: ca_location_format
      Src: /src/casync/src/casync.c:1856,1
    - Dst: ca_location_ref
      Src: /src/casync/src/casync.c:1858,1
    - Dst: ca_origin_bytes
      Src: /src/casync/src/casync.c:1859,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - s
    - location
    argTypes:
    - CaSync*
    - CaLocation*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1839
        line_start: 1839
        source_file: /src/casync/src/casync.c
    - condition: (s->cache)
      pos:
        line_end: 1842
        line_start: 1842
        source_file: /src/casync/src/casync.c
    - condition: (!s->current_cache_start_location)
      pos:
        line_end: 1843
        line_start: 1843
        source_file: /src/casync/src/casync.c
    - condition: (location)
      pos:
        line_end: 1840
        line_start: 1840
        source_file: /src/casync/src/casync.c
    - condition: (!s->current_cache_origin)
      pos:
        line_end: 1844
        line_start: 1844
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1862
      start: 1837
    functionDepth: 1
    functionLinenumber: 1837
    functionLinenumberEnd: 1862
    functionName: ca_sync_cache_get
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_location_format
    - log_debug
    - ca_cache_get
    - ca_location_ref
    - assert
    - log_debug_errno
    - ca_origin_bytes
    linkageType: ''
    returnType: int
    signature: int ca_sync_cache_get(CaSync *s, CaLocation *location)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1865,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1864
        line_start: 1864
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 1876
      start: 1864
    functionDepth: 0
    functionLinenumber: 1864
    functionLinenumberEnd: 1876
    functionName: ca_sync_need_data
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_sync_need_data(CaSync *s)
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:1882,1
    - Dst: ca_remote_can_put_archive
      Src: /src/casync/src/casync.c:1892,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1909,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1910,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync.c:1914,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:1920,1
    - Dst: ca_origin_get
      Src: /src/casync/src/casync.c:1920,1
    - Dst: ca_sync_cache_get
      Src: /src/casync/src/casync.c:1925,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1942,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1943,1
    - Dst: ca_origin_bytes
      Src: /src/casync/src/casync.c:1945,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:1947,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync.c:1953,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:1959,1
    - Dst: ca_origin_get
      Src: /src/casync/src/casync.c:1959,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:1960,1
    - Dst: ca_origin_get
      Src: /src/casync/src/casync.c:1960,1
    - Dst: ca_location_equal
      Src: /src/casync/src/casync.c:1962,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:1968,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:1969,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:1971,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:1972,1
    - Dst: MIN
      Src: /src/casync/src/casync.c:1974,1
    - Dst: ca_origin_advance_bytes
      Src: /src/casync/src/casync.c:1976,1
    - Dst: ca_origin_advance_bytes
      Src: /src/casync/src/casync.c:1980,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/src/casync.c:1984,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:1992,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1998,1
    - Dst: assert
      Src: /src/casync/src/casync.c:1999,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:2004,1
    - Dst: ca_sync_write_one_cached_chunk
      Src: /src/casync/src/casync.c:2006,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2008,1
    - Dst: ca_sync_reset_cache_data
      Src: /src/casync/src/casync.c:2013,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2019,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2020,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:2027,1
    - Dst: ca_location_format
      Src: /src/casync/src/casync.c:2027,1
    - Dst: ca_cache_remove
      Src: /src/casync/src/casync.c:2029,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2031,1
    - Dst: ca_encoder_seek_location
      Src: /src/casync/src/casync.c:2035,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2037,1
    - Dst: ca_sync_reset_cache_data
      Src: /src/casync/src/casync.c:2040,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/casync.c:2044,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/casync.c:2045,1
    - Dst: ca_encoder_step
      Src: /src/casync/src/casync.c:2054,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2056,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:2067,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2072,1
    - Dst: IN_SET
      Src: /src/casync/src/casync.c:2072,1
    - Dst: ca_sync_write_final_chunk
      Src: /src/casync/src/casync.c:2074,1
    - Dst: ca_sync_install_archive
      Src: /src/casync/src/casync.c:2078,1
    - Dst: ca_sync_write_remote_archive_eof
      Src: /src/casync/src/casync.c:2082,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync.c:2097,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2110,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2111,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2113,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync.c:2113,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2114,1
    - Dst: ca_origin_bytes
      Src: /src/casync/src/casync.c:2114,1
    - Dst: ca_encoder_current_location
      Src: /src/casync/src/casync.c:2117,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2119,1
    - Dst: ca_sync_cache_get
      Src: /src/casync/src/casync.c:2123,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2140,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2141,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2143,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync.c:2143,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2144,1
    - Dst: ca_origin_bytes
      Src: /src/casync/src/casync.c:2144,1
    - Dst: ca_encoder_current_location
      Src: /src/casync/src/casync.c:2148,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2150,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:2153,1
    - Dst: ca_origin_get
      Src: /src/casync/src/casync.c:2153,1
    - Dst: ca_location_equal
      Src: /src/casync/src/casync.c:2155,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:2157,1
    - Dst: ca_location_format
      Src: /src/casync/src/casync.c:2158,1
    - Dst: ca_location_format
      Src: /src/casync/src/casync.c:2158,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:2163,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:2164,1
    - Dst: ca_encoder_get_data
      Src: /src/casync/src/casync.c:2167,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2169,1
    - Dst: ca_origin_advance_bytes
      Src: /src/casync/src/casync.c:2177,1
    - Dst: ca_origin_items
      Src: /src/casync/src/casync.c:2189,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:2191,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:2196,1
    - Dst: ca_sync_write_one_cached_chunk
      Src: /src/casync/src/casync.c:2200,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2202,1
    - Dst: ca_sync_reset_cache_data
      Src: /src/casync/src/casync.c:2207,1
    - Dst: ca_location_advance
      Src: /src/casync/src/casync.c:2211,1
    - Dst: ca_sync_cache_get
      Src: /src/casync/src/casync.c:2216,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:2229,1
    - Dst: ca_origin_get
      Src: /src/casync/src/casync.c:2229,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:2232,1
    - Dst: assert_not_reached
      Src: /src/casync/src/casync.c:2238,1
    - Dst: ca_sync_need_data
      Src: /src/casync/src/casync.c:2241,1
    - Dst: ca_encoder_get_data
      Src: /src/casync/src/casync.c:2242,1
    - Dst: ca_encoder_get_data
      Src: /src/casync/src/casync.c:2244,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2246,1
    - Dst: ca_encoder_current_location
      Src: /src/casync/src/casync.c:2259,1
    - Dst: ca_location_patch_size
      Src: /src/casync/src/casync.c:2264,1
    - Dst: ca_sync_write_chunks
      Src: /src/casync/src/casync.c:2270,1
    - Dst: ca_sync_write_archive
      Src: /src/casync/src/casync.c:2274,1
    - Dst: ca_sync_write_remote_archive
      Src: /src/casync/src/casync.c:2278,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2293,1
    CyclomaticComplexity: 65
    EdgeCount: 65
    ICount: 254
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (IN_SET(s->cache_state, CA_SYNC_CACHE_OFF, CA_SYNC_CACHE_CHECK, CA_SYNC_CACHE_IDLE))
      pos:
        line_end: 2071
        line_start: 2071
        source_file: /src/casync/src/casync.c
    - condition: (s->current_cache_start_location)
      pos:
        line_end: 2018
        line_start: 2018
        source_file: /src/casync/src/casync.c
    - condition: (s)
      pos:
        line_end: 1881
        line_start: 1881
        source_file: /src/casync/src/casync.c
    - condition: (false)
      pos:
        line_end: 2292
        line_start: 2292
        source_file: /src/casync/src/casync.c
    - condition: (!s->current_cache_start_location)
      pos:
        line_end: 2109
        line_start: 2109
        source_file: /src/casync/src/casync.c
    - condition: (!s->current_cache_start_location)
      pos:
        line_end: 1908
        line_start: 1908
        source_file: /src/casync/src/casync.c
    - condition: (s->current_cache_start_location)
      pos:
        line_end: 1997
        line_start: 1997
        source_file: /src/casync/src/casync.c
    - condition: (ca_origin_bytes(s->buffer_origin) == 0)
      pos:
        line_end: 2143
        line_start: 2143
        source_file: /src/casync/src/casync.c
    - condition: (s->current_cache_origin)
      pos:
        line_end: 1998
        line_start: 1998
        source_file: /src/casync/src/casync.c
    - condition: (s->current_cache_origin)
      pos:
        line_end: 2140
        line_start: 2140
        source_file: /src/casync/src/casync.c
    - condition: (!s->current_cache_origin)
      pos:
        line_end: 1909
        line_start: 1909
        source_file: /src/casync/src/casync.c
    - condition: (s->current_cache_start_location)
      pos:
        line_end: 1941
        line_start: 1941
        source_file: /src/casync/src/casync.c
    - condition: (s->current_cache_origin)
      pos:
        line_end: 1942
        line_start: 1942
        source_file: /src/casync/src/casync.c
    - condition: (realloc_buffer_size(&s->buffer) == 0)
      pos:
        line_end: 2142
        line_start: 2142
        source_file: /src/casync/src/casync.c
    - condition: (ca_origin_bytes(s->buffer_origin) == 0)
      pos:
        line_end: 2113
        line_start: 2113
        source_file: /src/casync/src/casync.c
    - condition: (s->current_cache_origin)
      pos:
        line_end: 2019
        line_start: 2019
        source_file: /src/casync/src/casync.c
    - condition: (s->current_cache_start_location)
      pos:
        line_end: 2139
        line_start: 2139
        source_file: /src/casync/src/casync.c
    - condition: (realloc_buffer_size(&s->buffer) == 0)
      pos:
        line_end: 2112
        line_start: 2112
        source_file: /src/casync/src/casync.c
    - condition: (!s->current_cache_origin)
      pos:
        line_end: 2110
        line_start: 2110
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2295
      start: 1878
    functionDepth: 6
    functionLinenumber: 1878
    functionLinenumberEnd: 2295
    functionName: ca_sync_step_encode
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_step
    - IN_SET
    - ca_encoder_get_data
    - ca_cache_remove
    - ca_sync_write_one_cached_chunk
    - ca_location_format
    - ca_sync_cache_get
    - ca_remote_can_put_archive
    - ca_origin_items
    - log_debug
    - realloc_buffer_empty
    - assert_se
    - ca_origin_unref
    - log_debug_errno
    - MIN
    - ca_origin_get
    - ca_sync_write_final_chunk
    - _cleanup_
    - assert_not_reached
    - ca_sync_reset_cache_data
    - ca_encoder_current_location
    - ca_origin_advance_bytes
    - assert
    - ca_origin_bytes
    - ca_sync_need_data
    - ca_encoder_seek_location
    - ca_sync_install_archive
    - ca_sync_write_chunks
    - ca_sync_write_remote_archive_eof
    - ca_location_equal
    - ca_location_patch_size
    - ca_sync_write_remote_archive
    - ca_location_advance
    - ca_sync_write_archive
    - realloc_buffer_advance
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_sync_step_encode(CaSync *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2298
        line_start: 2298
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2310
      start: 2297
    functionDepth: 0
    functionLinenumber: 2297
    functionLinenumberEnd: 2310
    functionName: ca_sync_shall_seed
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool ca_sync_shall_seed(CaSync *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2313,1
    - Dst: ca_sync_shall_seed
      Src: /src/casync/src/casync.c:2315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2312
        line_start: 2312
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2319
      start: 2312
    functionDepth: 1
    functionLinenumber: 2312
    functionLinenumberEnd: 2319
    functionName: ca_sync_seed_ready
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_sync_shall_seed
    linkageType: ''
    returnType: bool
    signature: bool ca_sync_seed_ready(CaSync *s)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2324,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2325,1
    - Dst: ca_index_read_chunk
      Src: /src/casync/src/casync.c:2342,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2346,1
    - Dst: ca_decoder_put_eof
      Src: /src/casync/src/casync.c:2349,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2351,1
    - Dst: now
      Src: /src/casync/src/casync.c:2354,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:2361,1
    - Dst: ca_sync_seed_ready
      Src: /src/casync/src/casync.c:2371,1
    - Dst: now
      Src: /src/casync/src/casync.c:2375,1
    - Dst: ca_sync_get
      Src: /src/casync/src/casync.c:2377,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2383,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/casync.c:2386,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/casync.c:2396,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:2397,1
    - Dst: ca_decoder_put_data
      Src: /src/casync/src/casync.c:2407,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/casync.c:2408,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2410,1
    - Dst: realloc_buffer_acquire
      Src: /src/casync/src/casync.c:2419,1
    - Dst: read
      Src: /src/casync/src/casync.c:2423,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2425,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2427,1
    - Dst: ca_decoder_put_eof
      Src: /src/casync/src/casync.c:2431,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2433,1
    - Dst: ca_file_root_new
      Src: /src/casync/src/casync.c:2441,1
    - Dst: ca_decoder_get_request_offset
      Src: /src/casync/src/casync.c:2446,1
    - Dst: ca_origin_new
      Src: /src/casync/src/casync.c:2450,1
    - Dst: ca_location_new
      Src: /src/casync/src/casync.c:2454,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/casync.c:2456,1
    - Dst: ca_file_root_ref
      Src: /src/casync/src/casync.c:2460,1
    - Dst: ca_origin_put
      Src: /src/casync/src/casync.c:2462,1
    - Dst: ca_location_unref
      Src: /src/casync/src/casync.c:2463,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/casync.c:2465,1
    - Dst: ca_decoder_put_data
      Src: /src/casync/src/casync.c:2469,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/casync.c:2470,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/casync.c:2475,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 107
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2323
        line_start: 2323
        source_file: /src/casync/src/casync.c
    - condition: (s->decoder)
      pos:
        line_end: 2324
        line_start: 2324
        source_file: /src/casync/src/casync.c
    - condition: ((size_t) n <= BUFFER_SIZE)
      pos:
        line_end: 2426
        line_start: 2426
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2481
      start: 2321
    functionDepth: 4
    functionLinenumber: 2321
    functionLinenumberEnd: 2481
    functionName: ca_sync_process_decoder_request
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_index_read_chunk
    - log_debug
    - realloc_buffer_acquire
    - realloc_buffer_empty
    - ca_origin_unref
    - ca_file_root_ref
    - log_debug_errno
    - ca_decoder_get_request_offset
    - now
    - ca_decoder_put_data
    - read
    - assert
    - ca_sync_seed_ready
    - ca_location_new
    - ca_origin_new
    - ca_location_unref
    - ca_decoder_put_eof
    - ca_sync_get
    - ca_file_root_new
    - ca_origin_put
    linkageType: ''
    returnType: int
    signature: int ca_sync_process_decoder_request(CaSync *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2484,1
    - Dst: rename
      Src: /src/casync/src/casync.c:2491,1
    - Dst: mfree
      Src: /src/casync/src/casync.c:2494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2483
        line_start: 2483
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2496
      start: 2483
    functionDepth: 1
    functionLinenumber: 2483
    functionLinenumberEnd: 2496
    functionName: ca_sync_install_base
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - rename
    - mfree
    linkageType: ''
    returnType: int
    signature: int ca_sync_install_base(CaSync *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2498
        line_start: 2498
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2505
      start: 2498
    functionDepth: 0
    functionLinenumber: 2498
    functionLinenumberEnd: 2505
    functionName: ca_sync_reset_seek
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void ca_sync_reset_seek(CaSync *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2511,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2512,1
    - Dst: ca_sync_reset_seek
      Src: /src/casync/src/casync.c:2514,1
    - Dst: ca_decoder_get_seek_offset
      Src: /src/casync/src/casync.c:2516,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2518,1
    - Dst: ca_index_seek
      Src: /src/casync/src/casync.c:2521,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2523,1
    - Dst: lseek
      Src: /src/casync/src/casync.c:2528,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2530,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2510
        line_start: 2510
        source_file: /src/casync/src/casync.c
    - condition: (s->decoder)
      pos:
        line_end: 2511
        line_start: 2511
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2536
      start: 2507
    functionDepth: 7
    functionLinenumber: 2507
    functionLinenumberEnd: 2536
    functionName: ca_sync_process_decoder_seek
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - lseek
    - ca_index_seek
    - ca_decoder_get_seek_offset
    - assert
    - log_debug_errno
    - ca_sync_reset_seek
    linkageType: ''
    returnType: int
    signature: int ca_sync_process_decoder_seek(CaSync *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2542,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2543,1
    - Dst: ca_decoder_get_skip_size
      Src: /src/casync/src/casync.c:2545,1
    - Dst: skip_bytes_fd
      Src: /src/casync/src/casync.c:2558,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2541
        line_start: 2541
        source_file: /src/casync/src/casync.c
    - condition: (s->decoder)
      pos:
        line_end: 2542
        line_start: 2542
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2565
      start: 2538
    functionDepth: 1
    functionLinenumber: 2538
    functionLinenumberEnd: 2565
    functionName: ca_sync_process_decoder_skip
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - skip_bytes_fd
    - ca_decoder_get_skip_size
    linkageType: ''
    returnType: int
    signature: int ca_sync_process_decoder_skip(CaSync *s)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2573,1
    - Dst: ca_decoder_current_mode
      Src: /src/casync/src/casync.c:2582,1
    - Dst: S_ISREG
      Src: /src/casync/src/casync.c:2585,1
    - Dst: ca_decoder_get_hardlink_digest
      Src: /src/casync/src/casync.c:2588,1
    - Dst: ca_seed_get_hardlink_target
      Src: /src/casync/src/casync.c:2596,1
    - Dst: ca_seed_get_file_root
      Src: /src/casync/src/casync.c:2602,1
    - Dst: free
      Src: /src/casync/src/casync.c:2604,1
    - Dst: ca_decoder_try_hardlink
      Src: /src/casync/src/casync.c:2608,1
    - Dst: free
      Src: /src/casync/src/casync.c:2609,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2572
        line_start: 2572
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2617
      start: 2567
    functionDepth: 1
    functionLinenumber: 2567
    functionLinenumberEnd: 2617
    functionName: ca_sync_try_hardlink
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_current_mode
    - ca_seed_get_hardlink_target
    - S_ISREG
    - ca_decoder_get_hardlink_digest
    - ca_decoder_try_hardlink
    - assert
    - ca_seed_get_file_root
    - free
    linkageType: ''
    returnType: int
    signature: int ca_sync_try_hardlink(CaSync *s)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2622,1
    - Dst: ca_decoder_step
      Src: /src/casync/src/casync.c:2630,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:2632,1
    - Dst: ca_sync_install_base
      Src: /src/casync/src/casync.c:2638,1
    - Dst: ca_sync_try_hardlink
      Src: /src/casync/src/casync.c:2650,1
    - Dst: ca_sync_process_decoder_request
      Src: /src/casync/src/casync.c:2663,1
    - Dst: ca_sync_process_decoder_seek
      Src: /src/casync/src/casync.c:2666,1
    - Dst: ca_sync_process_decoder_skip
      Src: /src/casync/src/casync.c:2669,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2678,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2621
        line_start: 2621
        source_file: /src/casync/src/casync.c
    - condition: (false)
      pos:
        line_end: 2677
        line_start: 2677
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2680
      start: 2619
    functionDepth: 8
    functionLinenumber: 2619
    functionLinenumberEnd: 2680
    functionName: ca_sync_step_decode
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_try_hardlink
    - ca_sync_process_decoder_skip
    - ca_sync_install_base
    - ca_decoder_step
    - ca_sync_process_decoder_request
    - assert
    - ca_sync_process_decoder_seek
    - log_debug_errno
    linkageType: ''
    returnType: int
    signature: int ca_sync_step_decode(CaSync *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2683,1
    - Dst: ca_sync_shall_seed
      Src: /src/casync/src/casync.c:2685,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2682
        line_start: 2682
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2692
      start: 2682
    functionDepth: 1
    functionLinenumber: 2682
    functionLinenumberEnd: 2692
    functionName: ca_sync_current_seed
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_sync_shall_seed
    linkageType: ''
    returnType: CaSeed
    signature: CaSeed *ca_sync_current_seed(CaSync *s)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2697,1
    - Dst: ca_sync_shall_seed
      Src: /src/casync/src/casync.c:2699,1
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:2708,1
    - Dst: ca_seed_step
      Src: /src/casync/src/casync.c:2712,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2730,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2696
        line_start: 2696
        source_file: /src/casync/src/casync.c
    - condition: (false)
      pos:
        line_end: 2729
        line_start: 2729
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2737
      start: 2694
    functionDepth: 2
    functionLinenumber: 2694
    functionLinenumberEnd: 2737
    functionName: ca_sync_seed_step
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_seed_step
    - ca_sync_current_seed
    - ca_sync_shall_seed
    linkageType: ''
    returnType: int
    signature: int ca_sync_seed_step(CaSync *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2742,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2741
        line_start: 2741
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2754
      start: 2739
    functionDepth: 0
    functionLinenumber: 2739
    functionLinenumberEnd: 2754
    functionName: ca_sync_n_remotes
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: size_t
    signature: size_t ca_sync_n_remotes(CaSync *s)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2759,1
    - Dst: ca_sync_n_remotes
      Src: /src/casync/src/casync.c:2761,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2758
        line_start: 2758
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2783
      start: 2756
    functionDepth: 1
    functionLinenumber: 2756
    functionLinenumberEnd: 2783
    functionName: ca_sync_current_remote
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_sync_n_remotes
    linkageType: ''
    returnType: CaRemote
    signature: CaRemote *ca_sync_current_remote(CaSync *s)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2789,1
    - Dst: ca_sync_seed_ready
      Src: /src/casync/src/casync.c:2798,1
    - Dst: ca_index_get_available_chunks
      Src: /src/casync/src/casync.c:2801,1
    - Dst: ca_index_get_position
      Src: /src/casync/src/casync.c:2809,1
    - Dst: ca_index_set_position
      Src: /src/casync/src/casync.c:2813,1
    - Dst: ca_index_read_chunk
      Src: /src/casync/src/casync.c:2820,1
    - Dst: ca_sync_has_local
      Src: /src/casync/src/casync.c:2828,1
    - Dst: ca_remote_request_async
      Src: /src/casync/src/casync.c:2834,1
    - Dst: ca_index_set_position
      Src: /src/casync/src/casync.c:2845,1
    - Dst: ca_index_read_chunk
      Src: /src/casync/src/casync.c:2849,1
    - Dst: ca_index_set_position
      Src: /src/casync/src/casync.c:2851,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 50
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2788
        line_start: 2788
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2857
      start: 2785
    functionDepth: 4
    functionLinenumber: 2785
    functionLinenumberEnd: 2857
    functionName: ca_sync_remote_prefetch
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_seed_ready
    - ca_index_set_position
    - ca_index_get_position
    - ca_index_read_chunk
    - ca_remote_request_async
    - assert
    - ca_index_get_available_chunks
    - ca_sync_has_local
    linkageType: ''
    returnType: int
    signature: int ca_sync_remote_prefetch(CaSync *s)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2862,1
    - Dst: ca_remote_can_put_index
      Src: /src/casync/src/casync.c:2873,1
    - Dst: ca_index_incremental_read
      Src: /src/casync/src/casync.c:2879,1
    - Dst: ca_remote_put_index_eof
      Src: /src/casync/src/casync.c:2885,1
    - Dst: ca_remote_put_index
      Src: /src/casync/src/casync.c:2893,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/casync.c:2893,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync.c:2893,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2861
        line_start: 2861
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2898
      start: 2859
    functionDepth: 4
    functionLinenumber: 2859
    functionLinenumberEnd: 2898
    functionName: ca_sync_remote_push_index
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_index_incremental_read
    - realloc_buffer_data
    - ca_remote_can_put_index
    - ca_remote_put_index
    - assert
    - realloc_buffer_size
    - ca_remote_put_index_eof
    linkageType: ''
    returnType: int
    signature: int ca_sync_remote_push_index(CaSync *s)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2906,1
    - Dst: ca_remote_can_put_chunk
      Src: /src/casync/src/casync.c:2915,1
    - Dst: ca_remote_next_request
      Src: /src/casync/src/casync.c:2921,1
    - Dst: ca_sync_get_local
      Src: /src/casync/src/casync.c:2927,1
    - Dst: ca_remote_put_missing
      Src: /src/casync/src/casync.c:2929,1
    - Dst: ca_remote_put_chunk
      Src: /src/casync/src/casync.c:2938,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2905
        line_start: 2905
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 2943
      start: 2900
    functionDepth: 1
    functionLinenumber: 2900
    functionLinenumberEnd: 2943
    functionName: ca_sync_remote_push_chunk
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_remote_can_put_chunk
    - ca_sync_get_local
    - ca_remote_next_request
    - assert
    - ca_remote_put_missing
    - ca_remote_put_chunk
    linkageType: ''
    returnType: int
    signature: int ca_sync_remote_push_chunk(CaSync *s)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:2948,1
    - Dst: assert
      Src: /src/casync/src/casync.c:2949,1
    - Dst: ca_remote_step
      Src: /src/casync/src/casync.c:2951,1
    - Dst: ca_remote_read_index
      Src: /src/casync/src/casync.c:2958,1
    - Dst: ca_index_incremental_write
      Src: /src/casync/src/casync.c:2962,1
    - Dst: ca_index_incremental_eof
      Src: /src/casync/src/casync.c:2970,1
    - Dst: ca_remote_read_archive
      Src: /src/casync/src/casync.c:2980,1
    - Dst: ca_decoder_put_data
      Src: /src/casync/src/casync.c:2984,1
    - Dst: ca_decoder_put_eof
      Src: /src/casync/src/casync.c:2993,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - s
    - rr
    argTypes:
    - CaSync*
    - CaRemote*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 2947
        line_start: 2947
        source_file: /src/casync/src/casync.c
    - condition: (rr)
      pos:
        line_end: 2948
        line_start: 2948
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 3000
      start: 2945
    functionDepth: 4
    functionLinenumber: 2945
    functionLinenumberEnd: 3000
    functionName: ca_sync_remote_step_one
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_remote_read_index
    - ca_index_incremental_eof
    - ca_remote_read_archive
    - ca_decoder_put_data
    - assert
    - ca_remote_step
    - ca_decoder_put_eof
    - ca_index_incremental_write
    linkageType: ''
    returnType: int
    signature: int ca_sync_remote_step_one(CaSync *s, CaRemote *rr)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:3006,1
    - Dst: ca_sync_n_remotes
      Src: /src/casync/src/casync.c:3008,1
    - Dst: ca_sync_current_remote
      Src: /src/casync/src/casync.c:3011,1
    - Dst: ca_sync_remote_step_one
      Src: /src/casync/src/casync.c:3017,1
    - Dst: assert
      Src: /src/casync/src/casync.c:3041,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 3005
        line_start: 3005
        source_file: /src/casync/src/casync.c
    - condition: (false)
      pos:
        line_end: 3040
        line_start: 3040
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 3046
      start: 3002
    functionDepth: 5
    functionLinenumber: 3002
    functionLinenumberEnd: 3046
    functionName: ca_sync_remote_step
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_current_remote
    - assert
    - ca_sync_n_remotes
    - ca_sync_remote_step_one
    linkageType: ''
    returnType: int
    signature: int ca_sync_remote_step(CaSync *s)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/casync.c:3053,1
    - Dst: ca_store_set_digest_type
      Src: /src/casync/src/casync.c:3058,1
    - Dst: ca_store_set_digest_type
      Src: /src/casync/src/casync.c:3064,1
    - Dst: ca_store_set_digest_type
      Src: /src/casync/src/casync.c:3070,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - s
    - flags
    argTypes:
    - CaSync*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3076
      start: 3048
    functionDepth: 1
    functionLinenumber: 3048
    functionLinenumberEnd: 3076
    functionName: ca_sync_propagate_flags_to_stores
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_store_set_digest_type
    - ca_feature_flags_to_digest_type
    linkageType: ''
    returnType: int
    signature: int ca_sync_propagate_flags_to_stores(CaSync *s, uint64_t flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:3082,1
    - Dst: ca_seed_set_feature_flags
      Src: /src/casync/src/casync.c:3086,1
    - Dst: ca_seed_set_chunk_size
      Src: /src/casync/src/casync.c:3090,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - s
    - flags
    - cmin
    - cavg
    - cmax
    argTypes:
    - CaSync*
    - uint64_t
    - size_t
    - size_t
    - size_t
    assertStmts:
    - condition: (s)
      pos:
        line_end: 3081
        line_start: 3081
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 3096
      start: 3078
    functionDepth: 1
    functionLinenumber: 3078
    functionLinenumberEnd: 3096
    functionName: ca_sync_propagate_flags_to_seeds
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_seed_set_chunk_size
    - ca_seed_set_feature_flags
    linkageType: ''
    returnType: int
    signature: int ca_sync_propagate_flags_to_seeds(CaSync *s, uint64_t flags, size_t
      cmin, size_t cavg, size_t cmax)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/casync.c:3103,1
    - Dst: ca_remote_set_digest_type
      Src: /src/casync/src/casync.c:3108,1
    - Dst: ca_remote_set_digest_type
      Src: /src/casync/src/casync.c:3114,1
    - Dst: ca_remote_set_digest_type
      Src: /src/casync/src/casync.c:3120,1
    - Dst: ca_remote_set_digest_type
      Src: /src/casync/src/casync.c:3126,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - s
    - flags
    argTypes:
    - CaSync*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3132
      start: 3098
    functionDepth: 1
    functionLinenumber: 3098
    functionLinenumberEnd: 3132
    functionName: ca_sync_propagate_flags_to_remotes
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_remote_set_digest_type
    - ca_feature_flags_to_digest_type
    linkageType: ''
    returnType: int
    signature: int ca_sync_propagate_flags_to_remotes(CaSync *s, uint64_t flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:3135,1
    - Dst: ca_decoder_set_expected_feature_flags
      Src: /src/casync/src/casync.c:3140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - s
    - flags
    argTypes:
    - CaSync*
    - uint64_t
    assertStmts:
    - condition: (s)
      pos:
        line_end: 3134
        line_start: 3134
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 3141
      start: 3134
    functionDepth: 1
    functionLinenumber: 3134
    functionLinenumberEnd: 3141
    functionName: ca_sync_propagate_flags_to_decoder
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_set_expected_feature_flags
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_sync_propagate_flags_to_decoder(CaSync *s, uint64_t flags)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:3148,1
    - Dst: ca_index_get_feature_flags
      Src: /src/casync/src/casync.c:3159,1
    - Dst: ca_index_get_chunk_size_min
      Src: /src/casync/src/casync.c:3163,1
    - Dst: ca_index_get_chunk_size_avg
      Src: /src/casync/src/casync.c:3167,1
    - Dst: ca_index_get_chunk_size_max
      Src: /src/casync/src/casync.c:3171,1
    - Dst: ca_sync_propagate_flags_to_stores
      Src: /src/casync/src/casync.c:3175,1
    - Dst: ca_sync_propagate_flags_to_seeds
      Src: /src/casync/src/casync.c:3179,1
    - Dst: ca_sync_propagate_flags_to_remotes
      Src: /src/casync/src/casync.c:3183,1
    - Dst: ca_sync_propagate_flags_to_decoder
      Src: /src/casync/src/casync.c:3187,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 3147
        line_start: 3147
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 3193
      start: 3143
    functionDepth: 2
    functionLinenumber: 3143
    functionLinenumberEnd: 3193
    functionName: ca_sync_propagate_index_flags
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_index_get_feature_flags
    - ca_index_get_chunk_size_avg
    - ca_sync_propagate_flags_to_stores
    - ca_sync_propagate_flags_to_seeds
    - ca_index_get_chunk_size_max
    - ca_index_get_chunk_size_min
    - ca_sync_propagate_flags_to_decoder
    - ca_sync_propagate_flags_to_remotes
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_sync_propagate_index_flags(CaSync *s)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_start
      Src: /src/casync/src/casync.c:3201,1
    - Dst: ca_sync_propagate_index_flags
      Src: /src/casync/src/casync.c:3205,1
    - Dst: ca_sync_seed_step
      Src: /src/casync/src/casync.c:3209,1
    - Dst: ca_sync_remote_prefetch
      Src: /src/casync/src/casync.c:3213,1
    - Dst: ca_sync_remote_push_index
      Src: /src/casync/src/casync.c:3217,1
    - Dst: ca_sync_remote_push_chunk
      Src: /src/casync/src/casync.c:3221,1
    - Dst: ca_sync_step_decode
      Src: /src/casync/src/casync.c:3226,1
    - Dst: ca_sync_remote_step
      Src: /src/casync/src/casync.c:3231,1
    - Dst: ca_sync_step_encode
      Src: /src/casync/src/casync.c:3236,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3237
      start: 3195
    functionDepth: 9
    functionLinenumber: 3195
    functionLinenumberEnd: 3237
    functionName: ca_sync_step
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_sync_step_decode
    - ca_sync_remote_push_index
    - ca_sync_step_encode
    - ca_sync_remote_step
    - ca_sync_start
    - ca_sync_seed_step
    - ca_sync_remote_prefetch
    - ca_sync_propagate_index_flags
    - ca_sync_remote_push_chunk
    linkageType: ''
    returnType: int
    signature: int ca_sync_step(CaSync *s)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: ca_seed_get
      Src: /src/casync/src/casync.c:3265,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:3267,1
    - Dst: log_debug
      Src: /src/casync/src/casync.c:3271,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync.c:3277,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/casync.c:3280,1
    - Dst: ca_compress
      Src: /src/casync/src/casync.c:3282,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/casync.c:3284,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/casync.c:3288,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync.c:3289,1
    - Dst: ca_store_get
      Src: /src/casync/src/casync.c:3307,1
    - Dst: ca_store_get
      Src: /src/casync/src/casync.c:3318,1
    - Dst: ca_store_get
      Src: /src/casync/src/casync.c:3329,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 75
    argCount: 7
    argNames:
    - s
    - chunk_id
    - desired_compression
    - ret
    - ret_size
    - ret_effective_compression
    - ret_origin
    argTypes:
    - CaSync*
    - CaChunkID*
    - CaChunkCompression
    - void**
    - uint64_t*
    - CaChunkCompression*
    - CaOrigin**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3340
      start: 3239
    functionDepth: 1
    functionLinenumber: 3239
    functionLinenumberEnd: 3340
    functionName: ca_sync_get_local
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - realloc_buffer_data
    - ca_compress
    - ca_store_get
    - log_debug
    - realloc_buffer_empty
    - ca_origin_unref
    - ca_seed_get
    - log_debug_errno
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: "int ca_sync_get_local(\n                CaSync *s,\n                const
      CaChunkID *chunk_id,\n                CaChunkCompression desired_compression,\n
      \               const void **ret,\n                uint64_t *ret_size,\n                CaChunkCompression
      *ret_effective_compression,\n                CaOrigin **ret_origin)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_get_local
      Src: /src/casync/src/casync.c:3362,1
    - Dst: ca_remote_request
      Src: /src/casync/src/casync.c:3367,1
    - Dst: ca_remote_request
      Src: /src/casync/src/casync.c:3378,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 7
    argNames:
    - s
    - chunk_id
    - desired_compression
    - ret
    - ret_size
    - ret_effective_compression
    - ret_origin
    argTypes:
    - CaSync*
    - CaChunkID*
    - CaChunkCompression
    - void**
    - uint64_t*
    - CaChunkCompression*
    - CaOrigin**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3389
      start: 3342
    functionDepth: 2
    functionLinenumber: 3342
    functionLinenumberEnd: 3389
    functionName: ca_sync_get
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_sync_get_local
    - ca_remote_request
    linkageType: ''
    returnType: int
    signature: "int ca_sync_get(CaSync *s,\n                const CaChunkID *chunk_id,\n
      \               CaChunkCompression desired_compression,\n                const
      void **ret,\n                uint64_t *ret_size,\n                CaChunkCompression
      *ret_effective_compression,\n                CaOrigin **ret_origin)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ca_seed_has
      Src: /src/casync/src/casync.c:3402,1
    - Dst: ca_store_has
      Src: /src/casync/src/casync.c:3408,1
    - Dst: ca_store_has
      Src: /src/casync/src/casync.c:3414,1
    - Dst: ca_store_has
      Src: /src/casync/src/casync.c:3420,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - s
    - chunk_id
    argTypes:
    - CaSync*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3426
      start: 3391
    functionDepth: 1
    functionLinenumber: 3391
    functionLinenumberEnd: 3426
    functionName: ca_sync_has_local
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_seed_has
    - ca_store_has
    linkageType: ''
    returnType: int
    signature: int ca_sync_has_local(CaSync *s, const CaChunkID *chunk_id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_new
      Src: /src/casync/src/casync.c:3439,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/casync.c:3439,1
    - Dst: ca_chunk_id_make
      Src: /src/casync/src/casync.c:3444,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - s
    - p
    - l
    - ret
    argTypes:
    - CaSync*
    - void*
    - size_t
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3445
      start: 3428
    functionDepth: 3
    functionLinenumber: 3428
    functionLinenumberEnd: 3445
    functionName: ca_sync_make_chunk_id
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_digest_new
    - ca_feature_flags_to_digest_type
    - ca_chunk_id_make
    linkageType: ''
    returnType: int
    signature: int ca_sync_make_chunk_id(CaSync *s, const void *p, size_t l, CaChunkID
      *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_get_archive_digest
      Src: /src/casync/src/casync.c:3457,1
    - Dst: ca_decoder_get_archive_digest
      Src: /src/casync/src/casync.c:3459,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3462
      start: 3447
    functionDepth: 1
    functionLinenumber: 3447
    functionLinenumberEnd: 3462
    functionName: ca_sync_get_archive_digest
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_encoder_get_archive_digest
    - ca_decoder_get_archive_digest
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_archive_digest(CaSync *s, CaChunkID *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_get_payload_digest
      Src: /src/casync/src/casync.c:3474,1
    - Dst: ca_decoder_get_payload_digest
      Src: /src/casync/src/casync.c:3476,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3479
      start: 3464
    functionDepth: 1
    functionLinenumber: 3464
    functionLinenumberEnd: 3479
    functionName: ca_sync_get_payload_digest
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_get_payload_digest
    - ca_decoder_get_payload_digest
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_payload_digest(CaSync *s, CaChunkID *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_get_hardlink_digest
      Src: /src/casync/src/casync.c:3491,1
    - Dst: ca_decoder_get_hardlink_digest
      Src: /src/casync/src/casync.c:3493,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3496
      start: 3481
    functionDepth: 1
    functionLinenumber: 3481
    functionLinenumberEnd: 3496
    functionName: ca_sync_get_hardlink_digest
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_get_hardlink_digest
    - ca_decoder_get_hardlink_digest
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_hardlink_digest(CaSync *s, CaChunkID *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3506,1
    - Dst: ca_seed_current_path
      Src: /src/casync/src/casync.c:3508,1
    - Dst: ca_encoder_current_path
      Src: /src/casync/src/casync.c:3511,1
    - Dst: ca_decoder_current_path
      Src: /src/casync/src/casync.c:3513,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3516
      start: 3498
    functionDepth: 2
    functionLinenumber: 3498
    functionLinenumberEnd: 3516
    functionName: ca_sync_current_path
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_current_path
    - ca_encoder_current_path
    - ca_sync_current_seed
    - ca_seed_current_path
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_path(CaSync *s, char **ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3526,1
    - Dst: ca_seed_current_mode
      Src: /src/casync/src/casync.c:3528,1
    - Dst: ca_encoder_current_mode
      Src: /src/casync/src/casync.c:3531,1
    - Dst: ca_decoder_current_mode
      Src: /src/casync/src/casync.c:3533,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - mode_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3536
      start: 3518
    functionDepth: 2
    functionLinenumber: 3518
    functionLinenumberEnd: 3536
    functionName: ca_sync_current_mode
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_current_mode
    - ca_encoder_current_mode
    - ca_sync_current_seed
    - ca_seed_current_mode
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_mode(CaSync *s, mode_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3546,1
    - Dst: ca_encoder_current_target
      Src: /src/casync/src/casync.c:3551,1
    - Dst: ca_decoder_current_target
      Src: /src/casync/src/casync.c:3553,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3556
      start: 3538
    functionDepth: 2
    functionLinenumber: 3538
    functionLinenumberEnd: 3556
    functionName: ca_sync_current_target
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_current_target
    - ca_sync_current_seed
    - ca_encoder_current_target
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_target(CaSync *s, const char **ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3566,1
    - Dst: ca_encoder_current_mtime
      Src: /src/casync/src/casync.c:3571,1
    - Dst: ca_decoder_current_mtime
      Src: /src/casync/src/casync.c:3573,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3576
      start: 3558
    functionDepth: 2
    functionLinenumber: 3558
    functionLinenumberEnd: 3576
    functionName: ca_sync_current_mtime
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_current_mtime
    - ca_decoder_current_mtime
    - ca_sync_current_seed
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_mtime(CaSync *s, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3586,1
    - Dst: ca_encoder_current_size
      Src: /src/casync/src/casync.c:3591,1
    - Dst: ca_decoder_current_size
      Src: /src/casync/src/casync.c:3593,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3596
      start: 3578
    functionDepth: 2
    functionLinenumber: 3578
    functionLinenumberEnd: 3596
    functionName: ca_sync_current_size
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_current_size
    - ca_decoder_current_size
    - ca_sync_current_seed
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_size(CaSync *s, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3606,1
    - Dst: ca_encoder_current_uid
      Src: /src/casync/src/casync.c:3611,1
    - Dst: ca_decoder_current_uid
      Src: /src/casync/src/casync.c:3613,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3616
      start: 3598
    functionDepth: 2
    functionLinenumber: 3598
    functionLinenumberEnd: 3616
    functionName: ca_sync_current_uid
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_current_uid
    - ca_sync_current_seed
    - ca_decoder_current_uid
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_uid(CaSync *s, uid_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3626,1
    - Dst: ca_encoder_current_gid
      Src: /src/casync/src/casync.c:3631,1
    - Dst: ca_decoder_current_gid
      Src: /src/casync/src/casync.c:3633,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - gid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3636
      start: 3618
    functionDepth: 2
    functionLinenumber: 3618
    functionLinenumberEnd: 3636
    functionName: ca_sync_current_gid
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_current_gid
    - ca_sync_current_seed
    - ca_decoder_current_gid
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_gid(CaSync *s, gid_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3646,1
    - Dst: ca_encoder_current_user
      Src: /src/casync/src/casync.c:3651,1
    - Dst: ca_decoder_current_user
      Src: /src/casync/src/casync.c:3653,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3656
      start: 3638
    functionDepth: 2
    functionLinenumber: 3638
    functionLinenumberEnd: 3656
    functionName: ca_sync_current_user
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_current_user
    - ca_sync_current_seed
    - ca_decoder_current_user
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_user(CaSync *s, const char **ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3666,1
    - Dst: ca_encoder_current_group
      Src: /src/casync/src/casync.c:3671,1
    - Dst: ca_decoder_current_group
      Src: /src/casync/src/casync.c:3673,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3676
      start: 3658
    functionDepth: 2
    functionLinenumber: 3658
    functionLinenumberEnd: 3676
    functionName: ca_sync_current_group
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_current_group
    - ca_sync_current_seed
    - ca_encoder_current_group
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_group(CaSync *s, const char **ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3686,1
    - Dst: ca_encoder_current_rdev
      Src: /src/casync/src/casync.c:3691,1
    - Dst: ca_decoder_current_rdev
      Src: /src/casync/src/casync.c:3693,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - dev_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3696
      start: 3678
    functionDepth: 2
    functionLinenumber: 3678
    functionLinenumberEnd: 3696
    functionName: ca_sync_current_rdev
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_current_rdev
    - ca_encoder_current_rdev
    - ca_sync_current_seed
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_rdev(CaSync *s, dev_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3706,1
    - Dst: ca_encoder_current_chattr
      Src: /src/casync/src/casync.c:3711,1
    - Dst: ca_decoder_current_chattr
      Src: /src/casync/src/casync.c:3713,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - unsigned*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3716
      start: 3698
    functionDepth: 2
    functionLinenumber: 3698
    functionLinenumberEnd: 3716
    functionName: ca_sync_current_chattr
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_current_chattr
    - ca_sync_current_seed
    - ca_encoder_current_chattr
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_chattr(CaSync *s, unsigned *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3726,1
    - Dst: ca_encoder_current_fat_attrs
      Src: /src/casync/src/casync.c:3731,1
    - Dst: ca_decoder_current_fat_attrs
      Src: /src/casync/src/casync.c:3733,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3736
      start: 3718
    functionDepth: 2
    functionLinenumber: 3718
    functionLinenumberEnd: 3736
    functionName: ca_sync_current_fat_attrs
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_current_fat_attrs
    - ca_encoder_current_fat_attrs
    - ca_sync_current_seed
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_fat_attrs(CaSync *s, uint32_t *ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3748,1
    - Dst: ca_encoder_current_xattr
      Src: /src/casync/src/casync.c:3753,1
    - Dst: ca_decoder_current_xattr
      Src: /src/casync/src/casync.c:3755,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 5
    argNames:
    - s
    - where
    - ret_name
    - ret_value
    - ret_size
    argTypes:
    - CaSync*
    - CaIterate
    - char**
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3758
      start: 3738
    functionDepth: 2
    functionLinenumber: 3738
    functionLinenumberEnd: 3758
    functionName: ca_sync_current_xattr
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_current_xattr
    - ca_sync_current_seed
    - ca_encoder_current_xattr
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_xattr(CaSync *s, CaIterate where, const char **ret_name,
      const void **ret_value, size_t *ret_size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_seed
      Src: /src/casync/src/casync.c:3768,1
    - Dst: ca_encoder_current_quota_projid
      Src: /src/casync/src/casync.c:3773,1
    - Dst: ca_decoder_current_quota_projid
      Src: /src/casync/src/casync.c:3775,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3778
      start: 3760
    functionDepth: 2
    functionLinenumber: 3760
    functionLinenumberEnd: 3778
    functionName: ca_sync_current_quota_projid
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_current_quota_projid
    - ca_sync_current_seed
    - ca_decoder_current_quota_projid
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_quota_projid(CaSync *s, uint32_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:3783,1
    - Dst: ca_remote_get_io_fds
      Src: /src/casync/src/casync.c:3788,1
    - Dst: ca_remote_get_io_events
      Src: /src/casync/src/casync.c:3792,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - rr
    - pollfd
    argTypes:
    - CaRemote*
    - struct pollfd*
    assertStmts:
    - condition: (pollfd)
      pos:
        line_end: 3782
        line_start: 3782
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 3797
      start: 3780
    functionDepth: 1
    functionLinenumber: 3780
    functionLinenumberEnd: 3797
    functionName: ca_sync_add_pollfd
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_remote_get_io_fds
    - assert
    - ca_remote_get_io_events
    linkageType: ''
    returnType: int
    signature: int ca_sync_add_pollfd(CaRemote *rr, struct pollfd *pollfd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: newa
      Src: /src/casync/src/casync.c:3815,1
    - Dst: ca_sync_add_pollfd
      Src: /src/casync/src/casync.c:3817,1
    - Dst: ca_sync_add_pollfd
      Src: /src/casync/src/casync.c:3822,1
    - Dst: ca_sync_add_pollfd
      Src: /src/casync/src/casync.c:3827,1
    - Dst: ca_sync_add_pollfd
      Src: /src/casync/src/casync.c:3833,1
    - Dst: assert_se
      Src: /src/casync/src/casync.c:3839,1
    - Dst: nsec_to_timespec
      Src: /src/casync/src/casync.c:3844,1
    - Dst: ppoll
      Src: /src/casync/src/casync.c:3846,1
    - Dst: ppoll
      Src: /src/casync/src/casync.c:3848,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 3
    argNames:
    - s
    - timeout_nsec
    - ss
    argTypes:
    - CaSync*
    - uint64_t
    - sigset_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3853
      start: 3799
    functionDepth: 2
    functionLinenumber: 3799
    functionLinenumberEnd: 3853
    functionName: ca_sync_poll
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ppoll
    - nsec_to_timespec
    - ca_sync_add_pollfd
    - assert_se
    - newa
    linkageType: ''
    returnType: int
    signature: int ca_sync_poll(CaSync *s, uint64_t timeout_nsec, const sigset_t *ss)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3868
      start: 3855
    functionDepth: 0
    functionLinenumber: 3855
    functionLinenumberEnd: 3868
    functionName: ca_sync_current_archive_chunks
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_archive_chunks(CaSync *s, uint64_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3883
      start: 3870
    functionDepth: 0
    functionLinenumber: 3870
    functionLinenumberEnd: 3883
    functionName: ca_sync_current_archive_reused_chunks
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_archive_reused_chunks(CaSync *s, uint64_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_archive_offset
      Src: /src/casync/src/casync.c:3892,1
    - Dst: ca_decoder_current_archive_offset
      Src: /src/casync/src/casync.c:3895,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3898
      start: 3885
    functionDepth: 1
    functionLinenumber: 3885
    functionLinenumberEnd: 3898
    functionName: ca_sync_current_archive_offset
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_current_archive_offset
    - ca_encoder_current_archive_offset
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_archive_offset(CaSync *s, uint64_t *ret)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync.c:3903,1
    - Dst: fstat
      Src: /src/casync/src/casync.c:3914,1
    - Dst: S_ISREG
      Src: /src/casync/src/casync.c:3917,1
    - Dst: ca_index_get_blob_size
      Src: /src/casync/src/casync.c:3923,1
    - Dst: ca_decoder_set_archive_size
      Src: /src/casync/src/casync.c:3929,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 3902
        line_start: 3902
        source_file: /src/casync/src/casync.c
    constantsTouched: []
    func_position:
      end: 3934
      start: 3900
    functionDepth: 6
    functionLinenumber: 3900
    functionLinenumberEnd: 3934
    functionName: ca_sync_acquire_archive_size
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - fstat
    - S_ISREG
    - ca_decoder_set_archive_size
    - assert
    - ca_index_get_blob_size
    linkageType: ''
    returnType: int
    signature: int ca_sync_acquire_archive_size(CaSync *s)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_start
      Src: /src/casync/src/casync.c:3947,1
    - Dst: ca_sync_acquire_archive_size
      Src: /src/casync/src/casync.c:3954,1
    - Dst: ca_decoder_seek_offset
      Src: /src/casync/src/casync.c:3958,1
    - Dst: ca_sync_reset_seek
      Src: /src/casync/src/casync.c:3962,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - s
    - offset
    argTypes:
    - CaSync*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3965
      start: 3936
    functionDepth: 7
    functionLinenumber: 3936
    functionLinenumberEnd: 3965
    functionName: ca_sync_seek_offset
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_reset_seek
    - ca_decoder_seek_offset
    - ca_sync_acquire_archive_size
    - ca_sync_start
    linkageType: ''
    returnType: int
    signature: int ca_sync_seek_offset(CaSync *s, uint64_t offset)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_start
      Src: /src/casync/src/casync.c:3980,1
    - Dst: ca_sync_acquire_archive_size
      Src: /src/casync/src/casync.c:3987,1
    - Dst: ca_decoder_seek_path_offset
      Src: /src/casync/src/casync.c:3991,1
    - Dst: ca_sync_reset_seek
      Src: /src/casync/src/casync.c:3995,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 3
    argNames:
    - s
    - path
    - offset
    argTypes:
    - CaSync*
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3998
      start: 3967
    functionDepth: 7
    functionLinenumber: 3967
    functionLinenumberEnd: 3998
    functionName: ca_sync_seek_path_offset
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_reset_seek
    - ca_decoder_seek_path_offset
    - ca_sync_acquire_archive_size
    - ca_sync_start
    linkageType: ''
    returnType: int
    signature: int ca_sync_seek_path_offset(CaSync *s, const char *path, uint64_t
      offset)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_start
      Src: /src/casync/src/casync.c:4011,1
    - Dst: ca_sync_acquire_archive_size
      Src: /src/casync/src/casync.c:4018,1
    - Dst: ca_decoder_seek_path
      Src: /src/casync/src/casync.c:4022,1
    - Dst: ca_sync_reset_seek
      Src: /src/casync/src/casync.c:4026,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4029
      start: 4000
    functionDepth: 7
    functionLinenumber: 4000
    functionLinenumberEnd: 4029
    functionName: ca_sync_seek_path
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_reset_seek
    - ca_decoder_seek_path
    - ca_sync_acquire_archive_size
    - ca_sync_start
    linkageType: ''
    returnType: int
    signature: int ca_sync_seek_path(CaSync *s, const char *path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_start
      Src: /src/casync/src/casync.c:4040,1
    - Dst: ca_sync_acquire_archive_size
      Src: /src/casync/src/casync.c:4047,1
    - Dst: ca_decoder_seek_next_sibling
      Src: /src/casync/src/casync.c:4051,1
    - Dst: ca_sync_reset_seek
      Src: /src/casync/src/casync.c:4055,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4058
      start: 4031
    functionDepth: 7
    functionLinenumber: 4031
    functionLinenumberEnd: 4058
    functionName: ca_sync_seek_next_sibling
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_reset_seek
    - ca_decoder_seek_next_sibling
    - ca_sync_acquire_archive_size
    - ca_sync_start
    linkageType: ''
    returnType: int
    signature: int ca_sync_seek_next_sibling(CaSync *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_get_payload
      Src: /src/casync/src/casync.c:4069,1
    - Dst: ca_encoder_get_data
      Src: /src/casync/src/casync.c:4071,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - s
    - ret
    - ret_size
    argTypes:
    - CaSync*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4074
      start: 4060
    functionDepth: 1
    functionLinenumber: 4060
    functionLinenumberEnd: 4074
    functionName: ca_sync_get_payload
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_get_payload
    - ca_encoder_get_data
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_payload(CaSync *s, const void **ret, size_t *ret_size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_start
      Src: /src/casync/src/casync.c:4087,1
    - Dst: ca_sync_acquire_archive_size
      Src: /src/casync/src/casync.c:4094,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - s
    - ret_size
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4100
      start: 4076
    functionDepth: 7
    functionLinenumber: 4076
    functionLinenumberEnd: 4100
    functionName: ca_sync_get_archive_size
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_sync_acquire_archive_size
    - ca_sync_start
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_archive_size(CaSync *s, uint64_t *ret_size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_get_punch_holes_bytes
      Src: /src/casync/src/casync.c:4119,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4120
      start: 4102
    functionDepth: 1
    functionLinenumber: 4102
    functionLinenumberEnd: 4120
    functionName: ca_sync_get_punch_holes_bytes
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_get_punch_holes_bytes
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_punch_holes_bytes(CaSync *s, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_get_reflink_bytes
      Src: /src/casync/src/casync.c:4139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4140
      start: 4122
    functionDepth: 1
    functionLinenumber: 4122
    functionLinenumberEnd: 4140
    functionName: ca_sync_get_reflink_bytes
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_get_reflink_bytes
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_reflink_bytes(CaSync *s, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_get_hardlink_bytes
      Src: /src/casync/src/casync.c:4159,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4160
      start: 4142
    functionDepth: 1
    functionLinenumber: 4142
    functionLinenumberEnd: 4160
    functionName: ca_sync_get_hardlink_bytes
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_get_hardlink_bytes
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_hardlink_bytes(CaSync *s, uint64_t *ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_enable_archive_digest
      Src: /src/casync/src/casync.c:4171,1
    - Dst: ca_decoder_enable_archive_digest
      Src: /src/casync/src/casync.c:4177,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - s
    - b
    argTypes:
    - CaSync*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4184
      start: 4162
    functionDepth: 1
    functionLinenumber: 4162
    functionLinenumberEnd: 4184
    functionName: ca_sync_enable_archive_digest
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 1
    functionsReached:
    - ca_encoder_enable_archive_digest
    - ca_decoder_enable_archive_digest
    linkageType: ''
    returnType: int
    signature: int ca_sync_enable_archive_digest(CaSync *s, bool b)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_enable_payload_digest
      Src: /src/casync/src/casync.c:4196,1
    - Dst: ca_decoder_enable_payload_digest
      Src: /src/casync/src/casync.c:4202,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - s
    - b
    argTypes:
    - CaSync*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4209
      start: 4186
    functionDepth: 1
    functionLinenumber: 4186
    functionLinenumberEnd: 4209
    functionName: ca_sync_enable_payload_digest
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_encoder_enable_payload_digest
    - ca_decoder_enable_payload_digest
    linkageType: ''
    returnType: int
    signature: int ca_sync_enable_payload_digest(CaSync *s, bool b)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_enable_hardlink_digest
      Src: /src/casync/src/casync.c:4221,1
    - Dst: ca_decoder_enable_hardlink_digest
      Src: /src/casync/src/casync.c:4227,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - s
    - b
    argTypes:
    - CaSync*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4234
      start: 4211
    functionDepth: 1
    functionLinenumber: 4211
    functionLinenumberEnd: 4234
    functionName: ca_sync_enable_hardlink_digest
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_decoder_enable_hardlink_digest
    - ca_encoder_enable_hardlink_digest
    linkageType: ''
    returnType: int
    signature: int ca_sync_enable_hardlink_digest(CaSync *s, bool b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_seed_get_requests
      Src: /src/casync/src/casync.c:4249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4258
      start: 4236
    functionDepth: 1
    functionLinenumber: 4236
    functionLinenumberEnd: 4258
    functionName: ca_sync_get_seed_requests
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_seed_get_requests
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_seed_requests(CaSync *s, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_seed_get_request_bytes
      Src: /src/casync/src/casync.c:4273,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4282
      start: 4260
    functionDepth: 1
    functionLinenumber: 4260
    functionLinenumberEnd: 4282
    functionName: ca_sync_get_seed_request_bytes
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_seed_get_request_bytes
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_seed_request_bytes(CaSync *s, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_seed_get_seeding_time_nsec
      Src: /src/casync/src/casync.c:4298,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4307
      start: 4284
    functionDepth: 1
    functionLinenumber: 4284
    functionLinenumberEnd: 4307
    functionName: ca_sync_get_seed_seeding_time_nsec
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_seed_get_seeding_time_nsec
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_seed_seeding_time_nsec(CaSync *s, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_store_get_requests
      Src: /src/casync/src/casync.c:4320,1
    - Dst: ca_store_get_requests
      Src: /src/casync/src/casync.c:4329,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4338
      start: 4309
    functionDepth: 1
    functionLinenumber: 4309
    functionLinenumberEnd: 4338
    functionName: ca_sync_get_local_requests
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_store_get_requests
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_local_requests(CaSync *s, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_store_get_request_bytes
      Src: /src/casync/src/casync.c:4351,1
    - Dst: ca_store_get_request_bytes
      Src: /src/casync/src/casync.c:4360,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4369
      start: 4340
    functionDepth: 1
    functionLinenumber: 4340
    functionLinenumberEnd: 4369
    functionName: ca_sync_get_local_request_bytes
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_store_get_request_bytes
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_local_request_bytes(CaSync *s, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_get_requests
      Src: /src/casync/src/casync.c:4382,1
    - Dst: ca_remote_get_requests
      Src: /src/casync/src/casync.c:4391,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4400
      start: 4371
    functionDepth: 1
    functionLinenumber: 4371
    functionLinenumberEnd: 4400
    functionName: ca_sync_get_remote_requests
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_remote_get_requests
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_remote_requests(CaSync *s, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_get_request_bytes
      Src: /src/casync/src/casync.c:4413,1
    - Dst: ca_remote_get_request_bytes
      Src: /src/casync/src/casync.c:4422,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4431
      start: 4402
    functionDepth: 1
    functionLinenumber: 4402
    functionLinenumberEnd: 4431
    functionName: ca_sync_get_remote_request_bytes
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - ca_remote_get_request_bytes
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_remote_request_bytes(CaSync *s, uint64_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4446
      start: 4433
    functionDepth: 0
    functionLinenumber: 4433
    functionLinenumberEnd: 4446
    functionName: ca_sync_get_decoding_time_nsec
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_decoding_time_nsec(CaSync *s, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: now
      Src: /src/casync/src/casync.c:4457,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4459
      start: 4448
    functionDepth: 1
    functionLinenumber: 4448
    functionLinenumberEnd: 4459
    functionName: ca_sync_get_runtime_nsec
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - now
    linkageType: ''
    returnType: int
    signature: int ca_sync_get_runtime_nsec(CaSync *s, uint64_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CA_SYNC_IS_STARTED
      Src: /src/casync/src/casync.c:4468,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - compression
    argTypes:
    - CaSync*
    - CaCompressionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4473
      start: 4461
    functionDepth: 1
    functionLinenumber: 4461
    functionLinenumberEnd: 4473
    functionName: ca_sync_set_compression_type
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached:
    - CA_SYNC_IS_STARTED
    linkageType: ''
    returnType: int
    signature: int ca_sync_set_compression_type(CaSync *s, CaCompressionType compression)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4488
      start: 4475
    functionDepth: 0
    functionLinenumber: 4475
    functionLinenumberEnd: 4488
    functionName: ca_sync_current_cache_hits
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_cache_hits(CaSync *s, uint64_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4503
      start: 4490
    functionDepth: 0
    functionLinenumber: 4490
    functionLinenumberEnd: 4503
    functionName: ca_sync_current_cache_misses
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_cache_misses(CaSync *s, uint64_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4518
      start: 4505
    functionDepth: 0
    functionLinenumber: 4505
    functionLinenumberEnd: 4518
    functionName: ca_sync_current_cache_invalidated
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_cache_invalidated(CaSync *s, uint64_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSync*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4533
      start: 4520
    functionDepth: 0
    functionLinenumber: 4520
    functionLinenumberEnd: 4533
    functionName: ca_sync_current_cache_added
    functionSourceFile: /src/casync/src/casync.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_sync_current_cache_added(CaSync *s, uint64_t *ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 257
    functionName: CA_DECODER_IS_SEEKING
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - IN_SET
    linkageType: ''
    returnType: bool
    signature: bool CA_DECODER_IS_SEEKING(CaDecoder *d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 260
    functionName: CA_DECODER_AT_ROOT
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CA_DECODER_AT_ROOT(d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:262,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:268,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:268,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 261
        line_start: 261
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 269
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 269
    functionName: CA_DECODER_IS_NAKED
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - S_ISREG
    - S_ISBLK
    linkageType: ''
    returnType: bool
    signature: bool CA_DECODER_IS_NAKED(CaDecoder *d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:272,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - n
    argTypes:
    - CaDecoderNode*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 271
        line_start: 271
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 278
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 278
    functionName: ca_decoder_node_mode
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: mode_t
    signature: mode_t ca_decoder_node_mode(CaDecoderNode *n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/cadecoder.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 307
    functionName: ca_decoder_new
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaDecoder
    signature: CaDecoder *ca_decoder_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:312,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - n
    argTypes:
    - CaDecoderNode*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 311
        line_start: 311
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 324
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 324
    functionName: ca_decoder_node_free_xattrs
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - free
    linkageType: ''
    returnType: void
    signature: void ca_decoder_node_free_xattrs(CaDecoderNode *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/casync/src/cadecoder.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaDecoderACLEntry**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 335
    functionName: ca_decoder_node_free_acl_entries
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void ca_decoder_node_free_acl_entries(CaDecoderACLEntry **e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:338,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:340,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:341,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:342,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:343,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:347,1
    - Dst: ca_decoder_node_free_xattrs
      Src: /src/casync/src/cadecoder.c:352,1
    - Dst: ca_decoder_node_free_acl_entries
      Src: /src/casync/src/cadecoder.c:354,1
    - Dst: ca_decoder_node_free_acl_entries
      Src: /src/casync/src/cadecoder.c:355,1
    - Dst: ca_decoder_node_free_acl_entries
      Src: /src/casync/src/cadecoder.c:356,1
    - Dst: ca_decoder_node_free_acl_entries
      Src: /src/casync/src/cadecoder.c:357,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 1
    argNames:
    - n
    argTypes:
    - CaDecoderNode*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 337
        line_start: 337
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 368
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 368
    functionName: ca_decoder_node_flush_entry
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - mfree
    - ca_decoder_node_free_acl_entries
    - ca_decoder_node_free_xattrs
    linkageType: ''
    returnType: void
    signature: void ca_decoder_node_flush_entry(CaDecoderNode *n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:371,1
    - Dst: safe_close
      Src: /src/casync/src/cadecoder.c:374,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:378,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:379,1
    - Dst: ca_decoder_node_flush_entry
      Src: /src/casync/src/cadecoder.c:381,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:383,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/cadecoder.c:390,1
    - Dst: strv_free
      Src: /src/casync/src/cadecoder.c:392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - n
    argTypes:
    - CaDecoderNode*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 370
        line_start: 370
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 397
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 397
    functionName: ca_decoder_node_free
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - mfree
    - strv_free
    - safe_close
    - ca_decoder_node_flush_entry
    - ca_origin_unref
    - assert
    linkageType: ''
    returnType: void
    signature: void ca_decoder_node_free(CaDecoderNode *n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:402,1
    - Dst: ca_decoder_node_free
      Src: /src/casync/src/cadecoder.c:405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - d
    - leave
    argTypes:
    - CaDecoder*
    - size_t
    assertStmts:
    - condition: (d)
      pos:
        line_end: 401
        line_start: 401
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 409
      start: 399
    functionDepth: 3
    functionLinenumber: 399
    functionLinenumberEnd: 409
    functionName: ca_decoder_flush_nodes
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_decoder_node_free
    linkageType: ''
    returnType: void
    signature: void ca_decoder_flush_nodes(CaDecoder *d, size_t leave)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_flush_nodes
      Src: /src/casync/src/cadecoder.c:415,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/cadecoder.c:417,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/cadecoder.c:418,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:420,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:421,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:423,1
    - Dst: safe_close
      Src: /src/casync/src/cadecoder.c:425,1
    - Dst: ca_digest_free
      Src: /src/casync/src/cadecoder.c:427,1
    - Dst: ca_digest_free
      Src: /src/casync/src/cadecoder.c:428,1
    - Dst: ca_digest_free
      Src: /src/casync/src/cadecoder.c:429,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 411
    functionDepth: 4
    functionLinenumber: 411
    functionLinenumberEnd: 434
    functionName: ca_decoder_unref
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached:
    - safe_close
    - ca_origin_unref
    - ca_decoder_flush_nodes
    - ca_digest_free
    - realloc_buffer_free
    - free
    linkageType: ''
    returnType: CaDecoder
    signature: CaDecoder *ca_decoder_unref(CaDecoder *d)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - flags
    argTypes:
    - CaDecoder*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 442
    functionName: ca_decoder_set_expected_feature_flags
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_expected_feature_flags(CaDecoder *d, uint64_t flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_feature_flags_normalize_mask
      Src: /src/casync/src/cadecoder.c:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - d
    - mask
    argTypes:
    - CaDecoder*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 452
    functionName: ca_decoder_set_feature_flags_mask
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - ca_feature_flags_normalize_mask
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_feature_flags_mask(CaDecoder *d, uint64_t mask)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 464
    functionName: ca_decoder_get_feature_flags
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_get_feature_flags(CaDecoder *d, uint64_t *ret)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/casync/src/cadecoder.c:479,1
    - Dst: fstatfs
      Src: /src/casync/src/cadecoder.c:481,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:484,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:484,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:484,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:489,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:490,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:490,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - d
    - fd
    argTypes:
    - CaDecoder*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 508
    functionName: ca_decoder_set_base_fd
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - fstatfs
    - fstat
    - S_ISDIR
    - S_ISREG
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_base_fd(CaDecoder *d, int fd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/casync/src/cadecoder.c:524,1
    - Dst: fstatfs
      Src: /src/casync/src/cadecoder.c:526,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:528,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - d
    - fd
    argTypes:
    - CaDecoder*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 554
    functionName: ca_decoder_set_boundary_fd
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - fstat
    - fstatfs
    - S_ISDIR
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_boundary_fd(CaDecoder *d, int fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:561,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:561,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:561,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:569,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:570,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:570,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - d
    - m
    argTypes:
    - CaDecoder*
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 585
    functionName: ca_decoder_set_base_mode
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached:
    - S_ISDIR
    - S_ISREG
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_base_mode(CaDecoder *d, mode_t m)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:588,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 587
        line_start: 587
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 594
      start: 587
    functionDepth: 0
    functionLinenumber: 587
    functionLinenumberEnd: 594
    functionName: ca_decoder_current_node
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: CaDecoderNode
    signature: CaDecoderNode * ca_decoder_current_node(CaDecoder *d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 596
        line_start: 596
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 603
      start: 596
    functionDepth: 0
    functionLinenumber: 596
    functionLinenumberEnd: 603
    functionName: ca_decoder_current_parent_node
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: CaDecoderNode
    signature: CaDecoderNode * ca_decoder_current_parent_node(CaDecoder *d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:606,1
    - Dst: ca_decoder_node_free
      Src: /src/casync/src/cadecoder.c:609,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 605
        line_start: 605
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 610
      start: 605
    functionDepth: 3
    functionLinenumber: 605
    functionLinenumberEnd: 610
    functionName: ca_decoder_forget_children
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_decoder_node_free
    linkageType: ''
    returnType: void
    signature: void ca_decoder_forget_children(CaDecoder *d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:615,1
    - Dst: ca_decoder_forget_children
      Src: /src/casync/src/cadecoder.c:617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 614
        line_start: 614
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 640
      start: 612
    functionDepth: 4
    functionLinenumber: 612
    functionLinenumberEnd: 640
    functionName: ca_decoder_init_child
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_decoder_forget_children
    linkageType: ''
    returnType: CaDecoderNode
    signature: CaDecoderNode * ca_decoder_init_child(CaDecoder *d)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:643,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 642
        line_start: 642
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 653
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 653
    functionName: ca_decoder_enter_child
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_decoder_enter_child(CaDecoder *d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - d
    - state
    argTypes:
    - CaDecoder*
    - CaDecoderState
    assertStmts:
    - condition: (d)
      pos:
        line_end: 655
        line_start: 655
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 661
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 661
    functionName: ca_decoder_enter_state
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void ca_decoder_enter_state(CaDecoder *d, CaDecoderState state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 663
        line_start: 663
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 672
      start: 663
    functionDepth: 0
    functionLinenumber: 663
    functionLinenumberEnd: 672
    functionName: ca_decoder_leave_child
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_decoder_leave_child(CaDecoder *d)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:681,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:684,1
    - Dst: log_debug
      Src: /src/casync/src/cadecoder.c:686,1
    - Dst: log_debug
      Src: /src/casync/src/cadecoder.c:690,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - p
    - size
    argTypes:
    - void*
    - size_t
    assertStmts:
    - condition: (p)
      pos:
        line_end: 680
        line_start: 680
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 695
      start: 674
    functionDepth: 1
    functionLinenumber: 674
    functionLinenumberEnd: 695
    functionName: ca_decoder_object_is_complete
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - log_debug
    - read_le64
    linkageType: ''
    returnType: int
    signature: int ca_decoder_object_is_complete(const void *p, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:701,1
    - Dst: ca_feature_flags_normalize_mask
      Src: /src/casync/src/cadecoder.c:704,1
    - Dst: ca_feature_flags_normalize
      Src: /src/casync/src/cadecoder.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 700
        line_start: 700
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 713
      start: 697
    functionDepth: 1
    functionLinenumber: 697
    functionLinenumberEnd: 713
    functionName: ca_decoder_determine_replay_feature_flags
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - ca_feature_flags_normalize_mask
    - assert
    - ca_feature_flags_normalize
    linkageType: ''
    returnType: int
    signature: int ca_decoder_determine_replay_feature_flags(CaDecoder *d)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:718,1
    - Dst: dot_or_dot_dot
      Src: /src/casync/src/cadecoder.c:730,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - name
    - n
    argTypes:
    - char*
    - size_t
    assertStmts:
    - condition: (name)
      pos:
        line_end: 717
        line_start: 717
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 734
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 734
    functionName: validate_filename
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - dot_or_dot_dot
    linkageType: ''
    returnType: bool
    signature: bool validate_filename(const char *name, size_t n)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:737,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadecoder.c:739,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:773,1
    - Dst: S_ISLNK
      Src: /src/casync/src/cadecoder.c:776,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:782,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:786,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 41
    argCount: 3
    argNames:
    - d
    - m
    - flags
    argTypes:
    - CaDecoder*
    - uint64_t
    - uint64_t
    assertStmts:
    - condition: (d)
      pos:
        line_end: 736
        line_start: 736
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 791
      start: 736
    functionDepth: 0
    functionLinenumber: 736
    functionLinenumberEnd: 791
    functionName: validate_mode
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - S_ISDIR
    - S_ISLNK
    - UINT64_C
    linkageType: ''
    returnType: bool
    signature: bool validate_mode(CaDecoder *d, uint64_t m, uint64_t flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:796,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - d
    - u
    argTypes:
    - CaDecoder*
    - uint64_t
    assertStmts:
    - condition: (d)
      pos:
        line_end: 795
        line_start: 795
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 805
      start: 793
    functionDepth: 0
    functionLinenumber: 793
    functionLinenumberEnd: 805
    functionName: validate_uid_gid
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool validate_uid_gid(CaDecoder *d, uint64_t u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - d
    - f
    argTypes:
    - CaDecoder*
    - uint64_t
    assertStmts:
    - condition: (d)
      pos:
        line_end: 807
        line_start: 807
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 811
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 811
    functionName: validate_entry_flags
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool validate_entry_flags(CaDecoder *d, uint64_t f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64_C
      Src: /src/casync/src/cadecoder.c:815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - m
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 813
    functionDepth: 0
    functionLinenumber: 813
    functionLinenumberEnd: 816
    functionName: validate_major
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - UINT64_C
    linkageType: ''
    returnType: bool
    signature: bool validate_major(uint64_t m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64_C
      Src: /src/casync/src/cadecoder.c:820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - m
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 818
    functionDepth: 0
    functionLinenumber: 818
    functionLinenumberEnd: 821
    functionName: validate_minor
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - UINT64_C
    linkageType: ''
    returnType: bool
    signature: bool validate_minor(uint64_t m)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:825,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadecoder.c:834,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadecoder.c:837,1
    - Dst: UINT64_C
      Src: /src/casync/src/cadecoder.c:840,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - d
    - t
    argTypes:
    - CaDecoder*
    - uint64_t
    assertStmts:
    - condition: (d)
      pos:
        line_end: 824
        line_start: 824
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 843
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 843
    functionName: validate_nsec
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - UINT64_C
    linkageType: ''
    returnType: bool
    signature: bool validate_nsec(CaDecoder *d, uint64_t t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:848,1
    - Dst: memcmp
      Src: /src/casync/src/cadecoder.c:873,1
    - Dst: memcmp
      Src: /src/casync/src/cadecoder.c:875,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 18
    argCount: 2
    argNames:
    - name
    - n
    argTypes:
    - char*
    - size_t
    assertStmts:
    - condition: (name || n == 0)
      pos:
        line_end: 847
        line_start: 847
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 879
      start: 845
    functionDepth: 0
    functionLinenumber: 845
    functionLinenumberEnd: 879
    functionName: validate_user_group_name
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool validate_user_group_name(const char *name, size_t n)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:882,1
    - Dst: memchr
      Src: /src/casync/src/cadecoder.c:890,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - target
    - n
    argTypes:
    - char*
    - size_t
    assertStmts:
    - condition: (target || n == 0)
      pos:
        line_end: 881
        line_start: 881
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 897
      start: 881
    functionDepth: 0
    functionLinenumber: 881
    functionLinenumberEnd: 897
    functionName: validate_symlink_target
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - memchr
    linkageType: ''
    returnType: bool
    signature: bool validate_symlink_target(const char *target, size_t n)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:902,1
    - Dst: ca_feature_flags_are_normalized
      Src: /src/casync/src/cadecoder.c:912,1
    - Dst: ca_decoder_determine_replay_feature_flags
      Src: /src/casync/src/cadecoder.c:920,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - d
    - flags
    argTypes:
    - CaDecoder*
    - uint64_t
    assertStmts:
    - condition: (d)
      pos:
        line_end: 901
        line_start: 901
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 928
      start: 899
    functionDepth: 2
    functionLinenumber: 899
    functionLinenumberEnd: 928
    functionName: validate_feature_flags
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - ca_feature_flags_are_normalized
    - assert
    - ca_decoder_determine_replay_feature_flags
    linkageType: ''
    returnType: bool
    signature: bool validate_feature_flags(CaDecoder *d, uint64_t flags)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:933,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:934,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:936,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:938,1
    - Dst: validate_feature_flags
      Src: /src/casync/src/cadecoder.c:941,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:941,1
    - Dst: validate_mode
      Src: /src/casync/src/cadecoder.c:943,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:943,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:943,1
    - Dst: validate_entry_flags
      Src: /src/casync/src/cadecoder.c:945,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:945,1
    - Dst: validate_uid_gid
      Src: /src/casync/src/cadecoder.c:947,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:947,1
    - Dst: validate_uid_gid
      Src: /src/casync/src/cadecoder.c:949,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:949,1
    - Dst: validate_nsec
      Src: /src/casync/src/cadecoder.c:951,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:951,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 932
        line_start: 932
        source_file: /src/casync/src/cadecoder.c
    - condition: (e)
      pos:
        line_end: 933
        line_start: 933
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 955
      start: 930
    functionDepth: 3
    functionLinenumber: 930
    functionLinenumberEnd: 955
    functionName: validate_format_entry
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - validate_mode
    - validate_nsec
    - validate_entry_flags
    - validate_feature_flags
    - read_le64
    - assert
    - validate_uid_gid
    linkageType: ''
    returnType: CaFormatEntry
    signature: CaFormatEntry * validate_format_entry(CaDecoder *d, const void *p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:960,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:961,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:963,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:965,1
    - Dst: validate_user_group_name
      Src: /src/casync/src/cadecoder.c:971,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:971,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 959
        line_start: 959
        source_file: /src/casync/src/cadecoder.c
    - condition: (u)
      pos:
        line_end: 960
        line_start: 960
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 975
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 975
    functionName: validate_format_user
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - validate_user_group_name
    - read_le64
    linkageType: ''
    returnType: CaFormatUser
    signature: CaFormatUser * validate_format_user(CaDecoder *d, const void *p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:980,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:981,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:983,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:985,1
    - Dst: validate_user_group_name
      Src: /src/casync/src/cadecoder.c:991,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:991,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 979
        line_start: 979
        source_file: /src/casync/src/cadecoder.c
    - condition: (g)
      pos:
        line_end: 980
        line_start: 980
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 995
      start: 977
    functionDepth: 1
    functionLinenumber: 977
    functionLinenumberEnd: 995
    functionName: validate_format_group
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - validate_user_group_name
    - read_le64
    linkageType: ''
    returnType: CaFormatGroup
    signature: CaFormatGroup * validate_format_group(CaDecoder *d, const void *p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1001,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1002,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1004,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1006,1
    - Dst: memchr
      Src: /src/casync/src/cadecoder.c:1013,1
    - Dst: MIN
      Src: /src/casync/src/cadecoder.c:1013,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1013,1
    - Dst: ca_xattr_name_is_valid
      Src: /src/casync/src/cadecoder.c:1017,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 1000
        line_start: 1000
        source_file: /src/casync/src/cadecoder.c
    - condition: (x)
      pos:
        line_end: 1001
        line_start: 1001
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1021
      start: 997
    functionDepth: 1
    functionLinenumber: 997
    functionLinenumberEnd: 1021
    functionName: validate_format_xattr
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - ca_xattr_name_is_valid
    - memchr
    - read_le64
    - assert
    - MIN
    linkageType: ''
    returnType: CaFormatXAttr
    signature: CaFormatXAttr * validate_format_xattr(CaDecoder *d, const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1023
    functionDepth: 0
    functionLinenumber: 1023
    functionLinenumberEnd: 1025
    functionName: validate_acl_permissions
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool validate_acl_permissions(uint64_t p)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1030,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1031,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1033,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1039,1
    - Dst: validate_user_group_name
      Src: /src/casync/src/cadecoder.c:1044,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1044,1
    - Dst: validate_uid_gid
      Src: /src/casync/src/cadecoder.c:1048,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1048,1
    - Dst: validate_acl_permissions
      Src: /src/casync/src/cadecoder.c:1051,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1051,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 1029
        line_start: 1029
        source_file: /src/casync/src/cadecoder.c
    - condition: (a)
      pos:
        line_end: 1030
        line_start: 1030
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1055
      start: 1027
    functionDepth: 1
    functionLinenumber: 1027
    functionLinenumberEnd: 1055
    functionName: validate_format_acl_user
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - validate_user_group_name
    - read_le64
    - assert
    - validate_acl_permissions
    - validate_uid_gid
    linkageType: ''
    returnType: CaFormatACLUser
    signature: CaFormatACLUser * validate_format_acl_user(CaDecoder *d, const void
      *p)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1060,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1061,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1063,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1069,1
    - Dst: validate_user_group_name
      Src: /src/casync/src/cadecoder.c:1074,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1074,1
    - Dst: validate_uid_gid
      Src: /src/casync/src/cadecoder.c:1078,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1078,1
    - Dst: validate_acl_permissions
      Src: /src/casync/src/cadecoder.c:1081,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1081,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 1059
        line_start: 1059
        source_file: /src/casync/src/cadecoder.c
    - condition: (a)
      pos:
        line_end: 1060
        line_start: 1060
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1085
      start: 1057
    functionDepth: 1
    functionLinenumber: 1057
    functionLinenumberEnd: 1085
    functionName: validate_format_acl_group
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - validate_user_group_name
    - read_le64
    - assert
    - validate_acl_permissions
    - validate_uid_gid
    linkageType: ''
    returnType: CaFormatACLGroup
    signature: CaFormatACLGroup * validate_format_acl_group(CaDecoder *d, const void
      *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1090,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1091,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1093,1
    - Dst: validate_acl_permissions
      Src: /src/casync/src/cadecoder.c:1099,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1099,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 1089
        line_start: 1089
        source_file: /src/casync/src/cadecoder.c
    - condition: (a)
      pos:
        line_end: 1090
        line_start: 1090
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1103
      start: 1087
    functionDepth: 1
    functionLinenumber: 1087
    functionLinenumberEnd: 1103
    functionName: validate_format_acl_group_obj
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - validate_acl_permissions
    - read_le64
    linkageType: ''
    returnType: CaFormatACLGroupObj
    signature: CaFormatACLGroupObj * validate_format_acl_group_obj(CaDecoder *d, const
      void *p)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1108,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1109,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1111,1
    - Dst: validate_acl_permissions
      Src: /src/casync/src/cadecoder.c:1120,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1120,1
    - Dst: validate_acl_permissions
      Src: /src/casync/src/cadecoder.c:1122,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1122,1
    - Dst: validate_acl_permissions
      Src: /src/casync/src/cadecoder.c:1124,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1124,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1126,1
    - Dst: validate_acl_permissions
      Src: /src/casync/src/cadecoder.c:1127,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1127,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 1107
        line_start: 1107
        source_file: /src/casync/src/cadecoder.c
    - condition: (a)
      pos:
        line_end: 1108
        line_start: 1108
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1131
      start: 1105
    functionDepth: 1
    functionLinenumber: 1105
    functionLinenumberEnd: 1131
    functionName: validate_format_acl_default
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - validate_acl_permissions
    - read_le64
    linkageType: ''
    returnType: CaFormatACLDefault
    signature: CaFormatACLDefault * validate_format_acl_default(CaDecoder *d, const
      void *p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1137,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1139,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1145,1
    - Dst: memchr
      Src: /src/casync/src/cadecoder.c:1149,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1133
    functionDepth: 1
    functionLinenumber: 1133
    functionLinenumberEnd: 1153
    functionName: validate_format_selinux
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - memchr
    - read_le64
    linkageType: ''
    returnType: CaFormatSELinux
    signature: CaFormatSELinux *validate_format_selinux(CaDecoder *d, const void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1158,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1159,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1161,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 1157
        line_start: 1157
        source_file: /src/casync/src/cadecoder.c
    - condition: (f)
      pos:
        line_end: 1158
        line_start: 1158
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1167
      start: 1155
    functionDepth: 1
    functionLinenumber: 1155
    functionLinenumberEnd: 1167
    functionName: validate_format_fcaps
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: CaFormatFCaps
    signature: CaFormatFCaps * validate_format_fcaps(CaDecoder *d, const void *p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1172,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1173,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1175,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1177,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1180,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 1171
        line_start: 1171
        source_file: /src/casync/src/cadecoder.c
    - condition: (q)
      pos:
        line_end: 1172
        line_start: 1172
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1186
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1186
    functionName: validate_format_quota_projid
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: CaFormatQuotaProjID
    signature: CaFormatQuotaProjID * validate_format_quota_projid(CaDecoder *d, const
      void *p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1191,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1192,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1194,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1196,1
    - Dst: validate_symlink_target
      Src: /src/casync/src/cadecoder.c:1202,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1202,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 1190
        line_start: 1190
        source_file: /src/casync/src/cadecoder.c
    - condition: (s)
      pos:
        line_end: 1191
        line_start: 1191
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1206
      start: 1188
    functionDepth: 1
    functionLinenumber: 1188
    functionLinenumberEnd: 1206
    functionName: validate_format_symlink
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - validate_symlink_target
    - read_le64
    linkageType: ''
    returnType: CaFormatSymlink
    signature: CaFormatSymlink * validate_format_symlink(CaDecoder *d, const void
      *p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1211,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1213,1
    - Dst: validate_major
      Src: /src/casync/src/cadecoder.c:1219,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1219,1
    - Dst: validate_minor
      Src: /src/casync/src/cadecoder.c:1222,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1208
    functionDepth: 1
    functionLinenumber: 1208
    functionLinenumberEnd: 1226
    functionName: validate_format_device
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - validate_major
    - read_le64
    - validate_minor
    linkageType: ''
    returnType: CaFormatDevice
    signature: CaFormatDevice *validate_format_device(CaDecoder *d, const void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1231,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - d
    - q
    argTypes:
    - CaDecoder*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1237
    functionName: validate_format_payload
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - read_le64
    linkageType: ''
    returnType: CaFormatPayload
    signature: CaFormatPayload * validate_format_payload(CaDecoder *d, const void
      *q)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1242,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1244,1
    - Dst: validate_filename
      Src: /src/casync/src/cadecoder.c:1247,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1247,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1239
    functionDepth: 2
    functionLinenumber: 1239
    functionLinenumberEnd: 1251
    functionName: validate_format_filename
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - validate_filename
    - read_le64
    linkageType: ''
    returnType: CaFormatFilename
    signature: CaFormatFilename * validate_format_filename(CaDecoder *d, const void
      *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - g
    argTypes:
    - CaFormatGoodbye*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1253
    functionDepth: 1
    functionLinenumber: 1253
    functionLinenumberEnd: 1255
    functionName: CA_FORMAT_GOODBYE_TO_TAIL
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - read_le64
    linkageType: ''
    returnType: CaFormatGoodbyeTail
    signature: CaFormatGoodbyeTail * CA_FORMAT_GOODBYE_TO_TAIL(const CaFormatGoodbye
      *g)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1262,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1264,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1266,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1269,1
    - Dst: CA_FORMAT_GOODBYE_TO_TAIL
      Src: /src/casync/src/cadecoder.c:1273,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1274,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1276,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1276,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1280,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1280,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1282,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - d
    - p
    argTypes:
    - CaDecoder*
    - void*
    assertStmts:
    - condition: (sizeof(CaFormatGoodbyeTail) == sizeof(CaFormatGoodbyeItem))
      pos:
        line_end: 1261
        line_start: 1261
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1286
      start: 1257
    functionDepth: 2
    functionLinenumber: 1257
    functionLinenumberEnd: 1286
    functionName: validate_format_goodbye
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - CA_FORMAT_GOODBYE_TO_TAIL
    - assert
    - read_le64
    linkageType: ''
    returnType: CaFormatGoodbye
    signature: CaFormatGoodbye *validate_format_goodbye(CaDecoder *d, const void *p)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1292,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1293,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1295,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1295,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1297,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1297,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1300,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1301,1
    - Dst: strcmp
      Src: /src/casync/src/cadecoder.c:1308,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1313,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1313,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1315,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1315,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - CaFormatACLUser*
    - CaFormatACLUser*
    assertStmts:
    - condition: (a)
      pos:
        line_end: 1291
        line_start: 1291
        source_file: /src/casync/src/cadecoder.c
    - condition: (b)
      pos:
        line_end: 1292
        line_start: 1292
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1319
      start: 1288
    functionDepth: 1
    functionLinenumber: 1288
    functionLinenumberEnd: 1319
    functionName: compare_format_acl_user
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - strcmp
    - assert
    - read_le64
    linkageType: ''
    returnType: int
    signature: int compare_format_acl_user(const CaFormatACLUser *a, const CaFormatACLUser
      *b)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1325,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1326,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1328,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1328,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1330,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1330,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1333,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1334,1
    - Dst: strcmp
      Src: /src/casync/src/cadecoder.c:1341,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1346,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1346,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1348,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1348,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - CaFormatACLGroup*
    - CaFormatACLGroup*
    assertStmts:
    - condition: (a)
      pos:
        line_end: 1324
        line_start: 1324
        source_file: /src/casync/src/cadecoder.c
    - condition: (b)
      pos:
        line_end: 1325
        line_start: 1325
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1352
      start: 1321
    functionDepth: 1
    functionLinenumber: 1321
    functionLinenumberEnd: 1352
    functionName: compare_format_acl_group
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - strcmp
    - assert
    - read_le64
    linkageType: ''
    returnType: int
    signature: int compare_format_acl_group(const CaFormatACLGroup *a, const CaFormatACLGroup
      *b)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1364,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1369,1
    - Dst: format_goodbye_search_inner
      Src: /src/casync/src/cadecoder.c:1381,1
    - Dst: format_goodbye_search_inner
      Src: /src/casync/src/cadecoder.c:1387,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 5
    argNames:
    - table
    - n
    - h
    - i
    - idx
    argTypes:
    - CaFormatGoodbyeItem*
    - uint64_t
    - uint64_t
    - uint64_t
    - uint64_t*
    assertStmts:
    - condition: (table)
      pos:
        line_end: 1363
        line_start: 1363
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1393
      start: 1354
    functionDepth: 1
    functionLinenumber: 1354
    functionLinenumberEnd: 1393
    functionName: format_goodbye_search_inner
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - assert
    - format_goodbye_search_inner
    - read_le64
    linkageType: ''
    returnType: CaFormatGoodbyeItem
    signature: "CaFormatGoodbyeItem * format_goodbye_search_inner(\n                const
      CaFormatGoodbyeItem *table,\n                uint64_t n,\n                uint64_t
      h,\n                uint64_t i,\n                uint64_t *idx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1398,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - g
    argTypes:
    - CaFormatGoodbye*
    assertStmts:
    - condition: (g)
      pos:
        line_end: 1397
        line_start: 1397
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1408
      start: 1395
    functionDepth: 0
    functionLinenumber: 1395
    functionLinenumberEnd: 1408
    functionName: format_goodbye_items
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t format_goodbye_items(const CaFormatGoodbye *g)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1417,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1418,1
    - Dst: siphash24
      Src: /src/casync/src/cadecoder.c:1420,1
    - Dst: strlen
      Src: /src/casync/src/cadecoder.c:1420,1
    - Dst: format_goodbye_items
      Src: /src/casync/src/cadecoder.c:1422,1
    - Dst: format_goodbye_search_inner
      Src: /src/casync/src/cadecoder.c:1426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - g
    - name
    - idx
    argTypes:
    - CaFormatGoodbye*
    - char*
    - uint64_t
    assertStmts:
    - condition: (g)
      pos:
        line_end: 1416
        line_start: 1416
        source_file: /src/casync/src/cadecoder.c
    - condition: (name)
      pos:
        line_end: 1417
        line_start: 1417
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1427
      start: 1410
    functionDepth: 2
    functionLinenumber: 1410
    functionLinenumberEnd: 1427
    functionName: format_goodbye_search
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - strlen
    - assert
    - siphash24
    - format_goodbye_items
    - format_goodbye_search_inner
    linkageType: ''
    returnType: CaFormatGoodbyeItem
    signature: "CaFormatGoodbyeItem * format_goodbye_search(\n                const
      CaFormatGoodbye *g,\n                const char *name,\n                uint64_t
      idx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1434,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1435,1
    - Dst: strspn
      Src: /src/casync/src/cadecoder.c:1438,1
    - Dst: strcspn
      Src: /src/casync/src/cadecoder.c:1441,1
    - Dst: strndup
      Src: /src/casync/src/cadecoder.c:1450,1
    - Dst: strspn
      Src: /src/casync/src/cadecoder.c:1458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - p
    - ret
    argTypes:
    - char**
    - char**
    assertStmts:
    - condition: (p)
      pos:
        line_end: 1433
        line_start: 1433
        source_file: /src/casync/src/cadecoder.c
    - condition: (*p)
      pos:
        line_end: 1434
        line_start: 1434
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1461
      start: 1429
    functionDepth: 0
    functionLinenumber: 1429
    functionLinenumberEnd: 1461
    functionName: path_get_component
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - strcspn
    - strndup
    - strspn
    linkageType: ''
    returnType: int
    signature: int path_get_component(const char **p, char **ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1473,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1474,1
    - Dst: strspn
      Src: /src/casync/src/cadecoder.c:1484,1
    - Dst: strlen
      Src: /src/casync/src/cadecoder.c:1486,1
    - Dst: strncmp
      Src: /src/casync/src/cadecoder.c:1488,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:1493,1
    - Dst: strspn
      Src: /src/casync/src/cadecoder.c:1496,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - p
    - component
    argTypes:
    - char*
    - char*
    assertStmts:
    - condition: (p)
      pos:
        line_end: 1472
        line_start: 1472
        source_file: /src/casync/src/cadecoder.c
    - condition: (component)
      pos:
        line_end: 1473
        line_start: 1473
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 1502
      start: 1469
    functionDepth: 1
    functionLinenumber: 1469
    functionLinenumberEnd: 1502
    functionName: path_match_component
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - IN_SET
    - strlen
    - strncmp
    - strspn
    - assert
    linkageType: ''
    returnType: int
    signature: int path_match_component(const char *p, const char *component)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: path_get_component
      Src: /src/casync/src/cadecoder.c:1533,1
    - Dst: ca_decoder_leave_child
      Src: /src/casync/src/cadecoder.c:1544,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:1547,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:1553,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:1563,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:1566,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:1567,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:1572,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:1578,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:1585,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:1592,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:1596,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:1597,1
    - Dst: format_goodbye_search
      Src: /src/casync/src/cadecoder.c:1613,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:1614,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:1617,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1621,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1621,1
    - Dst: log_debug
      Src: /src/casync/src/cadecoder.c:1622,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1626,1
    - Dst: log_debug
      Src: /src/casync/src/cadecoder.c:1627,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1630,1
    - Dst: log_debug
      Src: /src/casync/src/cadecoder.c:1632,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1637,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:1639,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:1644,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:1652,1
    - Dst: log_debug
      Src: /src/casync/src/cadecoder.c:1662,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:1668,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 104
    argCount: 2
    argNames:
    - d
    - n
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1674
      start: 1504
    functionDepth: 3
    functionLinenumber: 1504
    functionLinenumberEnd: 1674
    functionName: ca_decoder_do_seek
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - S_ISDIR
    - S_ISREG
    - path_get_component
    - log_debug
    - ca_decoder_leave_child
    - read_le64
    - format_goodbye_search
    - ca_decoder_node_mode
    - ca_decoder_enter_state
    - free
    linkageType: ''
    returnType: int
    signature: int ca_decoder_do_seek(CaDecoder *d, CaDecoderNode *n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_ensure_allocated
      Src: /src/casync/src/cadecoder.c:1684,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/cadecoder.c:1684,1
    - Dst: ca_digest_write
      Src: /src/casync/src/cadecoder.c:1688,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - d
    - digest
    - p
    - l
    argTypes:
    - CaDecoder*
    - CaDigest**
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1690
      start: 1676
    functionDepth: 4
    functionLinenumber: 1676
    functionLinenumberEnd: 1690
    functionName: ca_decoder_write_digest
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - ca_digest_ensure_allocated
    - ca_digest_write
    - ca_feature_flags_to_digest_type
    linkageType: ''
    returnType: int
    signature: int ca_decoder_write_digest(CaDecoder *d, CaDigest **digest, const
      void *p, size_t l)
  - BBCount: 207
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1713,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1714,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:1715,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:1715,1
    - Dst: ca_decoder_node_flush_entry
      Src: /src/casync/src/cadecoder.c:1718,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:1720,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cadecoder.c:1721,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1730,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1737,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:1752,1
    - Dst: validate_format_entry
      Src: /src/casync/src/cadecoder.c:1758,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1763,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:1790,1
    - Dst: validate_format_user
      Src: /src/casync/src/cadecoder.c:1796,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1806,1
    - Dst: streq
      Src: /src/casync/src/cadecoder.c:1807,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:1831,1
    - Dst: validate_format_group
      Src: /src/casync/src/cadecoder.c:1837,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:1842,1
    - Dst: streq
      Src: /src/casync/src/cadecoder.c:1843,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:1866,1
    - Dst: validate_format_xattr
      Src: /src/casync/src/cadecoder.c:1872,1
    - Dst: log_debug
      Src: /src/casync/src/cadecoder.c:1874,1
    - Dst: strcmp
      Src: /src/casync/src/cadecoder.c:1879,1
    - Dst: malloc
      Src: /src/casync/src/cadecoder.c:1883,1
    - Dst: memcpy
      Src: /src/casync/src/cadecoder.c:1887,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:1935,1
    - Dst: validate_format_acl_user
      Src: /src/casync/src/cadecoder.c:1941,1
    - Dst: compare_format_acl_user
      Src: /src/casync/src/cadecoder.c:1946,1
    - Dst: compare_format_acl_user
      Src: /src/casync/src/cadecoder.c:1949,1
    - Dst: malloc
      Src: /src/casync/src/cadecoder.c:1953,1
    - Dst: memcpy
      Src: /src/casync/src/cadecoder.c:1957,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:1999,1
    - Dst: validate_format_acl_group
      Src: /src/casync/src/cadecoder.c:2005,1
    - Dst: compare_format_acl_group
      Src: /src/casync/src/cadecoder.c:2010,1
    - Dst: compare_format_acl_group
      Src: /src/casync/src/cadecoder.c:2013,1
    - Dst: malloc
      Src: /src/casync/src/cadecoder.c:2017,1
    - Dst: memcpy
      Src: /src/casync/src/cadecoder.c:2021,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:2055,1
    - Dst: validate_format_acl_group_obj
      Src: /src/casync/src/cadecoder.c:2061,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:2087,1
    - Dst: validate_format_acl_default
      Src: /src/casync/src/cadecoder.c:2093,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:2114,1
    - Dst: validate_format_selinux
      Src: /src/casync/src/cadecoder.c:2120,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:2137,1
    - Dst: validate_format_fcaps
      Src: /src/casync/src/cadecoder.c:2143,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:2158,1
    - Dst: validate_format_quota_projid
      Src: /src/casync/src/cadecoder.c:2164,1
    - Dst: S_ISLNK
      Src: /src/casync/src/cadecoder.c:2174,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2174,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:2179,1
    - Dst: validate_format_symlink
      Src: /src/casync/src/cadecoder.c:2185,1
    - Dst: S_ISCHR
      Src: /src/casync/src/cadecoder.c:2196,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2196,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:2196,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2196,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:2201,1
    - Dst: validate_format_device
      Src: /src/casync/src/cadecoder.c:2207,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:2218,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2218,1
    - Dst: validate_format_payload
      Src: /src/casync/src/cadecoder.c:2223,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:2238,1
    - Dst: validate_format_filename
      Src: /src/casync/src/cadecoder.c:2244,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:2260,1
    - Dst: validate_format_goodbye
      Src: /src/casync/src/cadecoder.c:2266,1
    - Dst: log_debug
      Src: /src/casync/src/cadecoder.c:2277,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2301,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:2303,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:2305,1
    - Dst: S_ISLNK
      Src: /src/casync/src/cadecoder.c:2307,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:2309,1
    - Dst: S_ISCHR
      Src: /src/casync/src/cadecoder.c:2309,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:2311,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:2313,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:2313,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2317,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:2317,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:2317,1
    - Dst: CA_DECODER_AT_ROOT
      Src: /src/casync/src/cadecoder.c:2321,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:2321,1
    - Dst: S_ISLNK
      Src: /src/casync/src/cadecoder.c:2325,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2336,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:2341,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2344,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2345,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2346,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2347,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2348,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2349,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2350,1
    - Dst: memdup
      Src: /src/casync/src/cadecoder.c:2352,1
    - Dst: strdup
      Src: /src/casync/src/cadecoder.c:2357,1
    - Dst: strdup
      Src: /src/casync/src/cadecoder.c:2363,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2369,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2372,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2373,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2374,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2375,1
    - Dst: strdup
      Src: /src/casync/src/cadecoder.c:2379,1
    - Dst: memdup
      Src: /src/casync/src/cadecoder.c:2385,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2385,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2389,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2394,1
    - Dst: strdup
      Src: /src/casync/src/cadecoder.c:2399,1
    - Dst: makedev
      Src: /src/casync/src/cadecoder.c:2405,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2405,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2405,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2408,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:2410,1
    - Dst: ca_decoder_do_seek
      Src: /src/casync/src/cadecoder.c:2415,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:2425,1
    - Dst: ca_decoder_write_digest
      Src: /src/casync/src/cadecoder.c:2428,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:2428,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/cadecoder.c:2431,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/cadecoder.c:2435,1
    - Dst: ca_decoder_write_digest
      Src: /src/casync/src/cadecoder.c:2436,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:2436,1
    CyclomaticComplexity: 246
    EdgeCount: 246
    ICount: 542
    argCount: 2
    argNames:
    - d
    - n
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    assertStmts:
    - condition: (!n->user_name)
      pos:
        line_end: 2344
        line_start: 2344
        source_file: /src/casync/src/cadecoder.c
    - condition: (n)
      pos:
        line_end: 1713
        line_start: 1713
        source_file: /src/casync/src/cadecoder.c
    - condition: (!n->group_name)
      pos:
        line_end: 2345
        line_start: 2345
        source_file: /src/casync/src/cadecoder.c
    - condition: (IN_SET(d->state, CA_DECODER_INIT, CA_DECODER_ENTERED, CA_DECODER_ENTERED_FOR_SEEK))
      pos:
        line_end: 1714
        line_start: 1714
        source_file: /src/casync/src/cadecoder.c
    - condition: (!n->entry)
      pos:
        line_end: 2343
        line_start: 2343
        source_file: /src/casync/src/cadecoder.c
    - condition: (d)
      pos:
        line_end: 1712
        line_start: 1712
        source_file: /src/casync/src/cadecoder.c
    - condition: (!n->have_quota_projid)
      pos:
        line_end: 2349
        line_start: 2349
        source_file: /src/casync/src/cadecoder.c
    - condition: (!n->fcaps)
      pos:
        line_end: 2346
        line_start: 2346
        source_file: /src/casync/src/cadecoder.c
    - condition: (!n->symlink_target)
      pos:
        line_end: 2347
        line_start: 2347
        source_file: /src/casync/src/cadecoder.c
    - condition: (!n->selinux_label)
      pos:
        line_end: 2348
        line_start: 2348
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 2441
      start: 1692
    functionDepth: 5
    functionLinenumber: 1692
    functionLinenumberEnd: 2441
    functionName: ca_decoder_parse_entry
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - IN_SET
    - validate_format_entry
    - validate_format_acl_group
    - validate_format_acl_default
    - log_debug
    - malloc
    - validate_format_xattr
    - validate_format_selinux
    - S_ISLNK
    - validate_format_acl_user
    - validate_format_filename
    - compare_format_acl_group
    - S_ISCHR
    - memcpy
    - validate_format_goodbye
    - memdup
    - S_ISDIR
    - ca_decoder_node_flush_entry
    - makedev
    - ca_digest_reset
    - ca_decoder_object_is_complete
    - validate_format_acl_group_obj
    - validate_format_group
    - S_ISBLK
    - strdup
    - assert
    - ca_decoder_enter_state
    - realloc_buffer_data
    - S_ISREG
    - ca_decoder_do_seek
    - validate_format_quota_projid
    - ca_decoder_write_digest
    - validate_format_user
    - streq
    - validate_format_fcaps
    - strcmp
    - validate_format_device
    - validate_format_payload
    - CA_DECODER_AT_ROOT
    - read_le64
    - validate_format_symlink
    - compare_format_acl_user
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_decoder_parse_entry(CaDecoder *d, CaDecoderNode *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2444,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:2446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 2443
        line_start: 2443
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 2453
      start: 2443
    functionDepth: 1
    functionLinenumber: 2443
    functionLinenumberEnd: 2453
    functionName: ca_decoder_reset_seek
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - mfree
    linkageType: ''
    returnType: void
    signature: void ca_decoder_reset_seek(CaDecoder *d)
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2463,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2464,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:2464,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cadecoder.c:2470,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:2474,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2475,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2481,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:2490,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:2499,1
    - Dst: validate_format_filename
      Src: /src/casync/src/cadecoder.c:2505,1
    - Dst: strdup
      Src: /src/casync/src/cadecoder.c:2516,1
    - Dst: GREEDY_REALLOC
      Src: /src/casync/src/cadecoder.c:2520,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2532,1
    - Dst: path_match_component
      Src: /src/casync/src/cadecoder.c:2534,1
    - Dst: ca_decoder_do_seek
      Src: /src/casync/src/cadecoder.c:2542,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:2546,1
    - Dst: path_get_component
      Src: /src/casync/src/cadecoder.c:2561,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2565,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2568,1
    - Dst: ca_decoder_reset_seek
      Src: /src/casync/src/cadecoder.c:2571,1
    - Dst: ca_decoder_reset_seek
      Src: /src/casync/src/cadecoder.c:2585,1
    - Dst: ca_decoder_init_child
      Src: /src/casync/src/cadecoder.c:2594,1
    - Dst: strdup
      Src: /src/casync/src/cadecoder.c:2602,1
    - Dst: ca_decoder_enter_child
      Src: /src/casync/src/cadecoder.c:2606,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:2611,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:2613,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/cadecoder.c:2619,1
    - Dst: ca_decoder_write_digest
      Src: /src/casync/src/cadecoder.c:2621,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:2621,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:2628,1
    - Dst: ca_decoder_object_is_complete
      Src: /src/casync/src/cadecoder.c:2634,1
    - Dst: validate_format_goodbye
      Src: /src/casync/src/cadecoder.c:2640,1
    - Dst: CA_FORMAT_GOODBYE_TO_TAIL
      Src: /src/casync/src/cadecoder.c:2647,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2648,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:2652,1
    - Dst: memdup
      Src: /src/casync/src/cadecoder.c:2653,1
    - Dst: ca_decoder_do_seek
      Src: /src/casync/src/cadecoder.c:2659,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:2668,1
    - Dst: ca_decoder_write_digest
      Src: /src/casync/src/cadecoder.c:2671,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:2671,1
    - Dst: log_debug
      Src: /src/casync/src/cadecoder.c:2676,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 139
    argCount: 2
    argNames:
    - d
    - n
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 2462
        line_start: 2462
        source_file: /src/casync/src/cadecoder.c
    - condition: "(IN_SET(d->state,\n                      CA_DECODER_IN_DIRECTORY,\n
        \                     CA_DECODER_SEEKING_TO_FILENAME,\n                      CA_DECODER_SEEKING_TO_NEXT_SIBLING,\n
        \                     CA_DECODER_SEEKING_TO_GOODBYE))"
      pos:
        line_end: 2467
        line_start: 2463
        source_file: /src/casync/src/cadecoder.c
    - condition: (match == PATH_MATCH_FINAL)
      pos:
        line_end: 2567
        line_start: 2567
        source_file: /src/casync/src/cadecoder.c
    - condition: (r > 0)
      pos:
        line_end: 2564
        line_start: 2564
        source_file: /src/casync/src/cadecoder.c
    - condition: (d->seek_path)
      pos:
        line_end: 2531
        line_start: 2531
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 2679
      start: 2455
    functionDepth: 5
    functionLinenumber: 2455
    functionLinenumberEnd: 2679
    functionName: ca_decoder_parse_filename
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - ca_decoder_init_child
    - IN_SET
    - log_debug
    - free
    - validate_format_goodbye
    - memdup
    - ca_decoder_reset_seek
    - ca_decoder_object_is_complete
    - ca_decoder_enter_child
    - path_match_component
    - strdup
    - assert
    - ca_decoder_enter_state
    - realloc_buffer_data
    - CA_FORMAT_GOODBYE_TO_TAIL
    - ca_decoder_do_seek
    - path_get_component
    - ca_decoder_write_digest
    - GREEDY_REALLOC
    - realloc_buffer_size
    - read_le64
    - ca_digest_reset
    - validate_format_filename
    linkageType: ''
    returnType: int
    signature: int ca_decoder_parse_filename(CaDecoder *d, CaDecoderNode *n)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2687,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2688,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2689,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cadecoder.c:2694,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:2698,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2699,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2702,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2710,1
    - Dst: ca_decoder_do_seek
      Src: /src/casync/src/cadecoder.c:2723,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 2
    argNames:
    - d
    - n
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 2686
        line_start: 2686
        source_file: /src/casync/src/cadecoder.c
    - condition: (d->state == CA_DECODER_SEEKING_TO_GOODBYE_TAIL)
      pos:
        line_end: 2687
        line_start: 2687
        source_file: /src/casync/src/cadecoder.c
    - condition: (n)
      pos:
        line_end: 2688
        line_start: 2688
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 2730
      start: 2681
    functionDepth: 4
    functionLinenumber: 2681
    functionLinenumberEnd: 2730
    functionName: ca_decoder_parse_goodbye_tail
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_data
    - ca_decoder_do_seek
    - read_le64
    - assert
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_decoder_parse_goodbye_tail(CaDecoder *d, CaDecoderNode *n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2733,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2734,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2742,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - d
    - n
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 2732
        line_start: 2732
        source_file: /src/casync/src/cadecoder.c
    - condition: (n >= d->nodes && n < d->nodes + d->n_nodes)
      pos:
        line_end: 2741
        line_start: 2741
        source_file: /src/casync/src/cadecoder.c
    - condition: (n)
      pos:
        line_end: 2733
        line_start: 2733
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 2748
      start: 2732
    functionDepth: 0
    functionLinenumber: 2732
    functionLinenumberEnd: 2748
    functionName: ca_decoder_node_get_fd
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_decoder_node_get_fd(CaDecoder *d, CaDecoderNode *n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2753,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2754,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2755,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2757,1
    - Dst: strlen
      Src: /src/casync/src/cadecoder.c:2762,1
    - Dst: memcpy
      Src: /src/casync/src/cadecoder.c:2766,1
    - Dst: umask
      Src: /src/casync/src/cadecoder.c:2768,1
    - Dst: ioctl
      Src: /src/casync/src/cadecoder.c:2769,1
    - Dst: umask
      Src: /src/casync/src/cadecoder.c:2770,1
    - Dst: mkdirat
      Src: /src/casync/src/cadecoder.c:2772,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - d
    - dir_fd
    - n
    - name
    argTypes:
    - CaDecoder*
    - int
    - CaDecoderNode*
    - char*
    assertStmts:
    - condition: (dir_fd >= 0)
      pos:
        line_end: 2752
        line_start: 2752
        source_file: /src/casync/src/cadecoder.c
    - condition: (n)
      pos:
        line_end: 2753
        line_start: 2753
        source_file: /src/casync/src/cadecoder.c
    - condition: (name)
      pos:
        line_end: 2754
        line_start: 2754
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 2775
      start: 2750
    functionDepth: 1
    functionLinenumber: 2750
    functionLinenumberEnd: 2775
    functionName: mkdir_or_mksubvol
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strlen
    - mkdirat
    - umask
    - ioctl
    - read_le64
    - assert
    linkageType: ''
    returnType: int
    signature: int mkdir_or_mksubvol(CaDecoder *d, int dir_fd, CaDecoderNode *n, const
      char *name)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2781,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2782,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2783,1
    - Dst: CA_DECODER_IS_SEEKING
      Src: /src/casync/src/cadecoder.c:2785,1
    - Dst: ca_decoder_node_get_fd
      Src: /src/casync/src/cadecoder.c:2791,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2795,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2796,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2797,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2799,1
    - Dst: mkdir_or_mksubvol
      Src: /src/casync/src/cadecoder.c:2805,1
    - Dst: openat
      Src: /src/casync/src/cadecoder.c:2809,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:2813,1
    - Dst: tempfn_random
      Src: /src/casync/src/cadecoder.c:2816,1
    - Dst: mkdir_or_mksubvol
      Src: /src/casync/src/cadecoder.c:2820,1
    - Dst: openat
      Src: /src/casync/src/cadecoder.c:2824,1
    - Dst: unlinkat
      Src: /src/casync/src/cadecoder.c:2827,1
    - Dst: tempfn_random
      Src: /src/casync/src/cadecoder.c:2836,1
    - Dst: openat
      Src: /src/casync/src/cadecoder.c:2840,1
    - Dst: tempfn_random
      Src: /src/casync/src/cadecoder.c:2851,1
    - Dst: symlinkat
      Src: /src/casync/src/cadecoder.c:2855,1
    - Dst: tempfn_random
      Src: /src/casync/src/cadecoder.c:2865,1
    - Dst: mkfifoat
      Src: /src/casync/src/cadecoder.c:2869,1
    - Dst: tempfn_random
      Src: /src/casync/src/cadecoder.c:2879,1
    - Dst: mknodat
      Src: /src/casync/src/cadecoder.c:2883,1
    - Dst: tempfn_random
      Src: /src/casync/src/cadecoder.c:2893,1
    - Dst: mknodat
      Src: /src/casync/src/cadecoder.c:2897,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2903,1
    - Dst: mask_attr_fd
      Src: /src/casync/src/cadecoder.c:2910,1
    - Dst: ca_feature_flags_to_chattr
      Src: /src/casync/src/cadecoder.c:2911,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:2911,1
    - Dst: ca_feature_flags_to_chattr
      Src: /src/casync/src/cadecoder.c:2912,1
    - Dst: write_quota_projid
      Src: /src/casync/src/cadecoder.c:2919,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 97
    argCount: 3
    argNames:
    - d
    - n
    - child
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    - CaDecoderNode*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 2781
        line_start: 2781
        source_file: /src/casync/src/cadecoder.c
    - condition: (d)
      pos:
        line_end: 2780
        line_start: 2780
        source_file: /src/casync/src/cadecoder.c
    - condition: (child->entry)
      pos:
        line_end: 2794
        line_start: 2794
        source_file: /src/casync/src/cadecoder.c
    - condition: (child->name)
      pos:
        line_end: 2795
        line_start: 2795
        source_file: /src/casync/src/cadecoder.c
    - condition: (false)
      pos:
        line_end: 2902
        line_start: 2902
        source_file: /src/casync/src/cadecoder.c
    - condition: (child)
      pos:
        line_end: 2782
        line_start: 2782
        source_file: /src/casync/src/cadecoder.c
    - condition: (!child->temporary_name)
      pos:
        line_end: 2796
        line_start: 2796
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 2926
      start: 2777
    functionDepth: 2
    functionLinenumber: 2777
    functionLinenumberEnd: 2926
    functionName: ca_decoder_realize_child
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - mknodat
    - unlinkat
    - write_quota_projid
    - ca_decoder_node_get_fd
    - IN_SET
    - mkdir_or_mksubvol
    - symlinkat
    - mask_attr_fd
    - tempfn_random
    - openat
    - CA_DECODER_IS_SEEKING
    - ca_feature_flags_to_chattr
    - read_le64
    - assert
    - mkfifoat
    linkageType: ''
    returnType: int
    signature: int ca_decoder_realize_child(CaDecoder *d, CaDecoderNode *n, CaDecoderNode
      *child)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2931,1
    - Dst: uid_is_valid
      Src: /src/casync/src/cadecoder.c:2933,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - d
    - uid
    argTypes:
    - CaDecoder*
    - uid_t
    assertStmts:
    - condition: (d)
      pos:
        line_end: 2930
        line_start: 2930
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 2947
      start: 2928
    functionDepth: 1
    functionLinenumber: 2928
    functionLinenumberEnd: 2947
    functionName: ca_decoder_shift_uid
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    - uid_is_valid
    linkageType: ''
    returnType: uid_t
    signature: uid_t ca_decoder_shift_uid(CaDecoder *d, uid_t uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_shift_uid
      Src: /src/casync/src/cadecoder.c:2950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d
    - gid
    argTypes:
    - CaDecoder*
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2951
      start: 2949
    functionDepth: 2
    functionLinenumber: 2949
    functionLinenumberEnd: 2951
    functionName: ca_decoder_shift_gid
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - ca_decoder_shift_uid
    linkageType: ''
    returnType: gid_t
    signature: gid_t ca_decoder_shift_gid(CaDecoder *d, gid_t gid)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2958,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2959,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:2960,1
    - Dst: streq_ptr
      Src: /src/casync/src/cadecoder.c:2962,1
    - Dst: parse_uid
      Src: /src/casync/src/cadecoder.c:2967,1
    - Dst: ca_decoder_shift_uid
      Src: /src/casync/src/cadecoder.c:2970,1
    - Dst: uid_is_valid
      Src: /src/casync/src/cadecoder.c:2971,1
    - Dst: sysconf
      Src: /src/casync/src/cadecoder.c:2978,1
    - Dst: malloc
      Src: /src/casync/src/cadecoder.c:2986,1
    - Dst: getpwnam_r
      Src: /src/casync/src/cadecoder.c:2990,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:2993,1
    - Dst: strdup
      Src: /src/casync/src/cadecoder.c:2994,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 3
    argNames:
    - d
    - name
    - ret
    argTypes:
    - CaDecoder*
    - char*
    - uid_t*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 2957
        line_start: 2957
        source_file: /src/casync/src/cadecoder.c
    - condition: (ret)
      pos:
        line_end: 2959
        line_start: 2959
        source_file: /src/casync/src/cadecoder.c
    - condition: (name)
      pos:
        line_end: 2958
        line_start: 2958
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 3005
      start: 2953
    functionDepth: 2
    functionLinenumber: 2953
    functionLinenumberEnd: 3005
    functionName: name_to_uid
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - parse_uid
    - sysconf
    - streq_ptr
    - uid_is_valid
    - malloc
    - getpwnam_r
    - ca_decoder_shift_uid
    - strdup
    - assert
    - free
    linkageType: ''
    returnType: int
    signature: int name_to_uid(CaDecoder *d, const char *name, uid_t *ret)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3012,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3013,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3014,1
    - Dst: streq_ptr
      Src: /src/casync/src/cadecoder.c:3016,1
    - Dst: parse_gid
      Src: /src/casync/src/cadecoder.c:3021,1
    - Dst: ca_decoder_shift_gid
      Src: /src/casync/src/cadecoder.c:3024,1
    - Dst: gid_is_valid
      Src: /src/casync/src/cadecoder.c:3025,1
    - Dst: sysconf
      Src: /src/casync/src/cadecoder.c:3032,1
    - Dst: malloc
      Src: /src/casync/src/cadecoder.c:3040,1
    - Dst: getgrnam_r
      Src: /src/casync/src/cadecoder.c:3044,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:3047,1
    - Dst: strdup
      Src: /src/casync/src/cadecoder.c:3048,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 3
    argNames:
    - d
    - name
    - ret
    argTypes:
    - CaDecoder*
    - char*
    - gid_t*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 3011
        line_start: 3011
        source_file: /src/casync/src/cadecoder.c
    - condition: (ret)
      pos:
        line_end: 3013
        line_start: 3013
        source_file: /src/casync/src/cadecoder.c
    - condition: (name)
      pos:
        line_end: 3012
        line_start: 3012
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 3059
      start: 3007
    functionDepth: 3
    functionLinenumber: 3007
    functionLinenumberEnd: 3059
    functionName: name_to_gid
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - sysconf
    - getgrnam_r
    - ca_decoder_shift_gid
    - streq_ptr
    - parse_gid
    - malloc
    - strdup
    - gid_is_valid
    - assert
    - free
    linkageType: ''
    returnType: int
    signature: int name_to_gid(CaDecoder *d, const char *name, gid_t *ret)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3065,1
    - Dst: acl_create_entry
      Src: /src/casync/src/cadecoder.c:3067,1
    - Dst: acl_set_tag_type
      Src: /src/casync/src/cadecoder.c:3070,1
    - Dst: acl_set_qualifier
      Src: /src/casync/src/cadecoder.c:3074,1
    - Dst: acl_get_permset
      Src: /src/casync/src/cadecoder.c:3077,1
    - Dst: acl_add_perm
      Src: /src/casync/src/cadecoder.c:3081,1
    - Dst: acl_add_perm
      Src: /src/casync/src/cadecoder.c:3084,1
    - Dst: acl_add_perm
      Src: /src/casync/src/cadecoder.c:3087,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 4
    argNames:
    - acl
    - tag
    - qualifier
    - permissions
    argTypes:
    - acl_t*
    - acl_tag_t
    - void*
    - uint64_t
    assertStmts:
    - condition: (acl)
      pos:
        line_end: 3064
        line_start: 3064
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 3091
      start: 3061
    functionDepth: 0
    functionLinenumber: 3061
    functionLinenumberEnd: 3091
    functionName: acl_add_entry_full
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - acl_create_entry
    - acl_set_qualifier
    - acl_get_permset
    - acl_add_perm
    - assert
    - acl_set_tag_type
    linkageType: ''
    returnType: int
    signature: int acl_add_entry_full(acl_t *acl, acl_tag_t tag, const void *qualifier,
      uint64_t permissions)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3097,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3098,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3103,1
    - Dst: name_to_uid
      Src: /src/casync/src/cadecoder.c:3104,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3108,1
    - Dst: ca_decoder_shift_uid
      Src: /src/casync/src/cadecoder.c:3110,1
    - Dst: uid_is_valid
      Src: /src/casync/src/cadecoder.c:3111,1
    - Dst: acl_add_entry_full
      Src: /src/casync/src/cadecoder.c:3115,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3115,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - d
    - acl
    - entries
    argTypes:
    - CaDecoder*
    - acl_t*
    - CaDecoderACLEntry*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 3096
        line_start: 3096
        source_file: /src/casync/src/cadecoder.c
    - condition: (acl)
      pos:
        line_end: 3097
        line_start: 3097
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 3121
      start: 3093
    functionDepth: 3
    functionLinenumber: 3093
    functionLinenumberEnd: 3121
    functionName: ca_decoder_acl_add_user_entries
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - name_to_uid
    - uid_is_valid
    - ca_decoder_shift_uid
    - read_le64
    - assert
    - acl_add_entry_full
    linkageType: ''
    returnType: int
    signature: int ca_decoder_acl_add_user_entries(CaDecoder *d, acl_t *acl, CaDecoderACLEntry
      *entries)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3127,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3128,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3133,1
    - Dst: name_to_gid
      Src: /src/casync/src/cadecoder.c:3134,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3138,1
    - Dst: ca_decoder_shift_gid
      Src: /src/casync/src/cadecoder.c:3140,1
    - Dst: gid_is_valid
      Src: /src/casync/src/cadecoder.c:3141,1
    - Dst: acl_add_entry_full
      Src: /src/casync/src/cadecoder.c:3145,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3145,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - d
    - acl
    - entries
    argTypes:
    - CaDecoder*
    - acl_t*
    - CaDecoderACLEntry*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 3126
        line_start: 3126
        source_file: /src/casync/src/cadecoder.c
    - condition: (acl)
      pos:
        line_end: 3127
        line_start: 3127
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 3151
      start: 3123
    functionDepth: 4
    functionLinenumber: 3123
    functionLinenumberEnd: 3151
    functionName: ca_decoder_acl_add_group_entries
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - ca_decoder_shift_gid
    - name_to_gid
    - read_le64
    - gid_is_valid
    - assert
    - acl_add_entry_full
    linkageType: ''
    returnType: int
    signature: int ca_decoder_acl_add_group_entries(CaDecoder *d, acl_t* acl, CaDecoderACLEntry
      *entries)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - m
    argTypes:
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3155
      start: 3153
    functionDepth: 0
    functionLinenumber: 3153
    functionLinenumberEnd: 3155
    functionName: mode_user_to_acl_permissions
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mode_user_to_acl_permissions(mode_t m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - m
    argTypes:
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3159
      start: 3157
    functionDepth: 0
    functionLinenumber: 3157
    functionLinenumberEnd: 3159
    functionName: mode_group_to_acl_permissions
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mode_group_to_acl_permissions(mode_t m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - m
    argTypes:
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3163
      start: 3161
    functionDepth: 0
    functionLinenumber: 3161
    functionLinenumberEnd: 3163
    functionName: mode_other_to_acl_permissions
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mode_other_to_acl_permissions(mode_t m)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3170,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3171,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3172,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3174,1
    - Dst: acl_init
      Src: /src/casync/src/cadecoder.c:3176,1
    - Dst: acl_add_entry_full
      Src: /src/casync/src/cadecoder.c:3180,1
    - Dst: mode_user_to_acl_permissions
      Src: /src/casync/src/cadecoder.c:3180,1
    - Dst: acl_add_entry_full
      Src: /src/casync/src/cadecoder.c:3184,1
    - Dst: mode_other_to_acl_permissions
      Src: /src/casync/src/cadecoder.c:3184,1
    - Dst: acl_add_entry_full
      Src: /src/casync/src/cadecoder.c:3192,1
    - Dst: mode_group_to_acl_permissions
      Src: /src/casync/src/cadecoder.c:3192,1
    - Dst: acl_add_entry_full
      Src: /src/casync/src/cadecoder.c:3196,1
    - Dst: acl_add_entry_full
      Src: /src/casync/src/cadecoder.c:3198,1
    - Dst: mode_group_to_acl_permissions
      Src: /src/casync/src/cadecoder.c:3198,1
    - Dst: ca_decoder_acl_add_user_entries
      Src: /src/casync/src/cadecoder.c:3202,1
    - Dst: ca_decoder_acl_add_group_entries
      Src: /src/casync/src/cadecoder.c:3206,1
    - Dst: acl_free
      Src: /src/casync/src/cadecoder.c:3214,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 3
    argNames:
    - d
    - n
    - ret
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    - acl_t*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 3169
        line_start: 3169
        source_file: /src/casync/src/cadecoder.c
    - condition: (n)
      pos:
        line_end: 3170
        line_start: 3170
        source_file: /src/casync/src/cadecoder.c
    - condition: (ret)
      pos:
        line_end: 3171
        line_start: 3171
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 3216
      start: 3165
    functionDepth: 5
    functionLinenumber: 3165
    functionLinenumberEnd: 3216
    functionName: ca_decoder_child_to_acl
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - acl_init
    - ca_decoder_acl_add_group_entries
    - mode_group_to_acl_permissions
    - mode_other_to_acl_permissions
    - mode_user_to_acl_permissions
    - read_le64
    - acl_free
    - assert
    - acl_add_entry_full
    - ca_decoder_acl_add_user_entries
    linkageType: ''
    returnType: int
    signature: int ca_decoder_child_to_acl(CaDecoder *d, CaDecoderNode *n, acl_t *ret)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3222,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3223,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3224,1
    - Dst: acl_init
      Src: /src/casync/src/cadecoder.c:3226,1
    - Dst: acl_add_entry_full
      Src: /src/casync/src/cadecoder.c:3232,1
    - Dst: acl_add_entry_full
      Src: /src/casync/src/cadecoder.c:3236,1
    - Dst: acl_add_entry_full
      Src: /src/casync/src/cadecoder.c:3240,1
    - Dst: acl_add_entry_full
      Src: /src/casync/src/cadecoder.c:3245,1
    - Dst: ca_decoder_acl_add_user_entries
      Src: /src/casync/src/cadecoder.c:3250,1
    - Dst: ca_decoder_acl_add_group_entries
      Src: /src/casync/src/cadecoder.c:3254,1
    - Dst: acl_free
      Src: /src/casync/src/cadecoder.c:3263,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 3
    argNames:
    - d
    - n
    - ret
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    - acl_t*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 3221
        line_start: 3221
        source_file: /src/casync/src/cadecoder.c
    - condition: (ret)
      pos:
        line_end: 3223
        line_start: 3223
        source_file: /src/casync/src/cadecoder.c
    - condition: (n)
      pos:
        line_end: 3222
        line_start: 3222
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 3265
      start: 3218
    functionDepth: 5
    functionLinenumber: 3218
    functionLinenumberEnd: 3265
    functionName: ca_decoder_child_to_default_acl
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - acl_init
    - ca_decoder_acl_add_group_entries
    - acl_free
    - assert
    - acl_add_entry_full
    - ca_decoder_acl_add_user_entries
    linkageType: ''
    returnType: int
    signature: int ca_decoder_child_to_default_acl(CaDecoder *d, CaDecoderNode *n,
      acl_t *ret)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3273,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3274,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:3282,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:3285,1
    - Dst: ca_origin_items
      Src: /src/casync/src/cadecoder.c:3288,1
    - Dst: ca_origin_get
      Src: /src/casync/src/cadecoder.c:3292,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3293,1
    - Dst: ca_location_open
      Src: /src/casync/src/cadecoder.c:3299,1
    - Dst: log_debug_errno
      Src: /src/casync/src/cadecoder.c:3301,1
    - Dst: ca_location_format
      Src: /src/casync/src/cadecoder.c:3301,1
    - Dst: reflink_fd
      Src: /src/casync/src/cadecoder.c:3307,1
    - Dst: safe_close
      Src: /src/casync/src/cadecoder.c:3308,1
    - Dst: ERRNO_IS_UNSUPPORTED
      Src: /src/casync/src/cadecoder.c:3313,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 2
    argNames:
    - d
    - n
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 3272
        line_start: 3272
        source_file: /src/casync/src/cadecoder.c
    - condition: (n)
      pos:
        line_end: 3273
        line_start: 3273
        source_file: /src/casync/src/cadecoder.c
    - condition: (l)
      pos:
        line_end: 3292
        line_start: 3292
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 3326
      start: 3267
    functionDepth: 2
    functionLinenumber: 3267
    functionLinenumberEnd: 3326
    functionName: ca_decoder_node_reflink
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - ca_origin_get
    - ERRNO_IS_UNSUPPORTED
    - safe_close
    - ca_location_format
    - S_ISREG
    - ca_origin_items
    - assert
    - log_debug_errno
    - reflink_fd
    - ca_decoder_node_mode
    - ca_location_open
    linkageType: ''
    returnType: int
    signature: int ca_decoder_node_reflink(CaDecoder *d, CaDecoderNode *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/casync/src/cadecoder.c:3331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3332
      start: 3328
    functionDepth: 0
    functionLinenumber: 3328
    functionLinenumberEnd: 3332
    functionName: comparison_fn_strcmpp
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int comparison_fn_strcmpp(const void *x, const void *y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bsearch
      Src: /src/casync/src/cadecoder.c:3344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - key
    - base
    - nmemb
    - size
    - fn
    argTypes:
    - void*
    - void*
    - size_t
    - size_t
    - comparison_fn_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3345
      start: 3334
    functionDepth: 0
    functionLinenumber: 3334
    functionLinenumberEnd: 3345
    functionName: safe_bsearch
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - bsearch
    linkageType: ''
    returnType: void
    signature: "void * safe_bsearch(\n                const void *key, const void
      *base,\n                size_t nmemb, size_t size,\n                comparison_fn_t
      fn)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3352,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3353,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:3364,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:3367,1
    - Dst: fcntl
      Src: /src/casync/src/cadecoder.c:3373,1
    - Dst: fdopendir
      Src: /src/casync/src/cadecoder.c:3377,1
    - Dst: safe_close
      Src: /src/casync/src/cadecoder.c:3379,1
    - Dst: readdir
      Src: /src/casync/src/cadecoder.c:3388,1
    - Dst: dot_or_dot_dot
      Src: /src/casync/src/cadecoder.c:3398,1
    - Dst: safe_bsearch
      Src: /src/casync/src/cadecoder.c:3403,1
    - Dst: rm_rf_at
      Src: /src/casync/src/cadecoder.c:3406,1
    - Dst: closedir
      Src: /src/casync/src/cadecoder.c:3414,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 2
    argNames:
    - d
    - n
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 3351
        line_start: 3351
        source_file: /src/casync/src/cadecoder.c
    - condition: (n)
      pos:
        line_end: 3352
        line_start: 3352
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 3416
      start: 3347
    functionDepth: 2
    functionLinenumber: 3347
    functionLinenumberEnd: 3416
    functionName: ca_decoder_node_delete
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - rm_rf_at
    - safe_close
    - S_ISDIR
    - closedir
    - fcntl
    - readdir
    - safe_bsearch
    - fdopendir
    - assert
    - dot_or_dot_dot
    - ca_decoder_node_mode
    linkageType: ''
    returnType: int
    signature: int ca_decoder_node_delete(CaDecoder *d, CaDecoderNode *n)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/cadecoder.c:3419,1
    - Dst: openat
      Src: /src/casync/src/cadecoder.c:3427,1
    - Dst: fstat
      Src: /src/casync/src/cadecoder.c:3435,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:3439,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:3439,1
    - Dst: mask_attr_fd
      Src: /src/casync/src/cadecoder.c:3442,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - dir_fd
    - name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3443
      start: 3418
    functionDepth: 1
    functionLinenumber: 3418
    functionLinenumberEnd: 3443
    functionName: drop_immutable
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - mask_attr_fd
    - fstat
    - S_ISREG
    - S_ISDIR
    - openat
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int drop_immutable(int dir_fd, const char *name)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3448,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3449,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3450,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3451,1
    - Dst: renameat
      Src: /src/casync/src/cadecoder.c:3453,1
    - Dst: drop_immutable
      Src: /src/casync/src/cadecoder.c:3456,1
    - Dst: renameat
      Src: /src/casync/src/cadecoder.c:3462,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:3466,1
    - Dst: renameat2
      Src: /src/casync/src/cadecoder.c:3474,1
    - Dst: drop_immutable
      Src: /src/casync/src/cadecoder.c:3477,1
    - Dst: renameat2
      Src: /src/casync/src/cadecoder.c:3483,1
    - Dst: rm_rf_at
      Src: /src/casync/src/cadecoder.c:3491,1
    - Dst: renameat
      Src: /src/casync/src/cadecoder.c:3493,1
    - Dst: rm_rf_at
      Src: /src/casync/src/cadecoder.c:3498,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 4
    argNames:
    - d
    - dir_fd
    - temporary_name
    - name
    argTypes:
    - CaDecoder*
    - int
    - char*
    - char*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 3447
        line_start: 3447
        source_file: /src/casync/src/cadecoder.c
    - condition: (temporary_name)
      pos:
        line_end: 3449
        line_start: 3449
        source_file: /src/casync/src/cadecoder.c
    - condition: (dir_fd >= 0)
      pos:
        line_end: 3448
        line_start: 3448
        source_file: /src/casync/src/cadecoder.c
    - condition: (name)
      pos:
        line_end: 3450
        line_start: 3450
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 3505
      start: 3445
    functionDepth: 2
    functionLinenumber: 3445
    functionLinenumberEnd: 3505
    functionName: ca_decoder_install_file
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - renameat2
    - rm_rf_at
    - IN_SET
    - renameat
    - assert
    - drop_immutable
    linkageType: ''
    returnType: int
    signature: int ca_decoder_install_file(CaDecoder *d, int dir_fd, const char *temporary_name,
      const char *name)
  - BBCount: 111
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3514,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3515,1
    - Dst: ca_decoder_node_get_fd
      Src: /src/casync/src/cadecoder.c:3525,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:3532,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:3538,1
    - Dst: ca_decoder_node_reflink
      Src: /src/casync/src/cadecoder.c:3539,1
    - Dst: CA_DECODER_IS_NAKED
      Src: /src/casync/src/cadecoder.c:3545,1
    - Dst: S_ISLNK
      Src: /src/casync/src/cadecoder.c:3549,1
    - Dst: S_ISFIFO
      Src: /src/casync/src/cadecoder.c:3551,1
    - Dst: S_ISSOCK
      Src: /src/casync/src/cadecoder.c:3553,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:3555,1
    - Dst: S_ISCHR
      Src: /src/casync/src/cadecoder.c:3555,1
    - Dst: fstat
      Src: /src/casync/src/cadecoder.c:3562,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3564,1
    - Dst: fstatat
      Src: /src/casync/src/cadecoder.c:3566,1
    - Dst: fstatfs
      Src: /src/casync/src/cadecoder.c:3576,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3583,1
    - Dst: S_ISCHR
      Src: /src/casync/src/cadecoder.c:3586,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:3586,1
    - Dst: S_ISLNK
      Src: /src/casync/src/cadecoder.c:3590,1
    - Dst: strlen
      Src: /src/casync/src/cadecoder.c:3598,1
    - Dst: newa
      Src: /src/casync/src/cadecoder.c:3600,1
    - Dst: readlinkat
      Src: /src/casync/src/cadecoder.c:3602,1
    - Dst: memcmp
      Src: /src/casync/src/cadecoder.c:3608,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:3612,1
    - Dst: ca_decoder_node_delete
      Src: /src/casync/src/cadecoder.c:3613,1
    - Dst: name_to_uid
      Src: /src/casync/src/cadecoder.c:3623,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3627,1
    - Dst: ca_decoder_shift_uid
      Src: /src/casync/src/cadecoder.c:3629,1
    - Dst: uid_is_valid
      Src: /src/casync/src/cadecoder.c:3630,1
    - Dst: name_to_gid
      Src: /src/casync/src/cadecoder.c:3635,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3639,1
    - Dst: ca_decoder_shift_gid
      Src: /src/casync/src/cadecoder.c:3641,1
    - Dst: gid_is_valid
      Src: /src/casync/src/cadecoder.c:3642,1
    - Dst: fchown
      Src: /src/casync/src/cadecoder.c:3649,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3651,1
    - Dst: fchownat
      Src: /src/casync/src/cadecoder.c:3653,1
    - Dst: fstat
      Src: /src/casync/src/cadecoder.c:3662,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3664,1
    - Dst: fstatat
      Src: /src/casync/src/cadecoder.c:3666,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:3676,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3677,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:3683,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3686,1
    - Dst: fchmod
      Src: /src/casync/src/cadecoder.c:3694,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3696,1
    - Dst: fchmodat
      Src: /src/casync/src/cadecoder.c:3698,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3706,1
    - Dst: fchmod
      Src: /src/casync/src/cadecoder.c:3709,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3709,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3711,1
    - Dst: fchmodat
      Src: /src/casync/src/cadecoder.c:3713,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3713,1
    - Dst: strlen
      Src: /src/casync/src/cadecoder.c:3721,1
    - Dst: DECIMAL_STR_MAX
      Src: /src/casync/src/cadecoder.c:3721,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3726,1
    - Dst: openat
      Src: /src/casync/src/cadecoder.c:3728,1
    - Dst: sprintf
      Src: /src/casync/src/cadecoder.c:3733,1
    - Dst: ca_decoder_child_to_acl
      Src: /src/casync/src/cadecoder.c:3735,1
    - Dst: safe_close
      Src: /src/casync/src/cadecoder.c:3737,1
    - Dst: acl_set_file
      Src: /src/casync/src/cadecoder.c:3741,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:3742,1
    - Dst: safe_close
      Src: /src/casync/src/cadecoder.c:3744,1
    - Dst: acl_free
      Src: /src/casync/src/cadecoder.c:3745,1
    - Dst: acl_free
      Src: /src/casync/src/cadecoder.c:3749,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:3751,1
    - Dst: ca_decoder_child_to_default_acl
      Src: /src/casync/src/cadecoder.c:3754,1
    - Dst: safe_close
      Src: /src/casync/src/cadecoder.c:3756,1
    - Dst: acl_set_file
      Src: /src/casync/src/cadecoder.c:3760,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:3761,1
    - Dst: safe_close
      Src: /src/casync/src/cadecoder.c:3763,1
    - Dst: acl_free
      Src: /src/casync/src/cadecoder.c:3764,1
    - Dst: acl_free
      Src: /src/casync/src/cadecoder.c:3768,1
    - Dst: safe_close
      Src: /src/casync/src/cadecoder.c:3771,1
    - Dst: S_ISLNK
      Src: /src/casync/src/cadecoder.c:3774,1
    - Dst: flistxattr
      Src: /src/casync/src/cadecoder.c:3786,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:3788,1
    - Dst: realloc
      Src: /src/casync/src/cadecoder.c:3802,1
    - Dst: strlen
      Src: /src/casync/src/cadecoder.c:3817,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3818,1
    - Dst: ca_xattr_name_store
      Src: /src/casync/src/cadecoder.c:3821,1
    - Dst: streq
      Src: /src/casync/src/cadecoder.c:3825,1
    - Dst: fremovexattr
      Src: /src/casync/src/cadecoder.c:3833,1
    - Dst: strlen
      Src: /src/casync/src/cadecoder.c:3844,1
    - Dst: fsetxattr
      Src: /src/casync/src/cadecoder.c:3846,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3848,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:3854,1
    - Dst: fsetxattr
      Src: /src/casync/src/cadecoder.c:3857,1
    - Dst: fgetxattr
      Src: /src/casync/src/cadecoder.c:3865,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:3869,1
    - Dst: fremovexattr
      Src: /src/casync/src/cadecoder.c:3872,1
    - Dst: fgetfilecon
      Src: /src/casync/src/cadecoder.c:3885,1
    - Dst: asprintf
      Src: /src/casync/src/cadecoder.c:3887,1
    - Dst: lgetfilecon
      Src: /src/casync/src/cadecoder.c:3890,1
    - Dst: streq_ptr
      Src: /src/casync/src/cadecoder.c:3904,1
    - Dst: freecon
      Src: /src/casync/src/cadecoder.c:3905,1
    - Dst: fsetfilecon
      Src: /src/casync/src/cadecoder.c:3911,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3913,1
    - Dst: lsetfilecon
      Src: /src/casync/src/cadecoder.c:3914,1
    - Dst: fremovexattr
      Src: /src/casync/src/cadecoder.c:3918,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3920,1
    - Dst: lremovexattr
      Src: /src/casync/src/cadecoder.c:3921,1
    - Dst: nsec_to_timespec
      Src: /src/casync/src/cadecoder.c:3939,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3939,1
    - Dst: futimens
      Src: /src/casync/src/cadecoder.c:3943,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:3945,1
    - Dst: utimensat
      Src: /src/casync/src/cadecoder.c:3947,1
    - Dst: ca_decoder_install_file
      Src: /src/casync/src/cadecoder.c:3957,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:3961,1
    - Dst: ca_feature_flags_to_chattr
      Src: /src/casync/src/cadecoder.c:3968,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3968,1
    - Dst: ca_feature_flags_to_chattr
      Src: /src/casync/src/cadecoder.c:3969,1
    - Dst: mask_attr_fd
      Src: /src/casync/src/cadecoder.c:3971,1
    - Dst: ca_feature_flags_to_fat_attrs
      Src: /src/casync/src/cadecoder.c:3979,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3979,1
    - Dst: ca_feature_flags_to_fat_attrs
      Src: /src/casync/src/cadecoder.c:3980,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:3982,1
    - Dst: mask_fat_attr_fd
      Src: /src/casync/src/cadecoder.c:3984,1
    - Dst: F_TYPE_EQUAL
      Src: /src/casync/src/cadecoder.c:3995,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:3997,1
    - Dst: ioctl
      Src: /src/casync/src/cadecoder.c:4003,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:4006,1
    - Dst: ioctl
      Src: /src/casync/src/cadecoder.c:4012,1
    - Dst: fstat
      Src: /src/casync/src/cadecoder.c:4026,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4028,1
    - Dst: fstatat
      Src: /src/casync/src/cadecoder.c:4029,1
    - Dst: ca_feature_flags_time_granularity_nsec
      Src: /src/casync/src/cadecoder.c:4034,1
    - Dst: timespec_to_nsec
      Src: /src/casync/src/cadecoder.c:4038,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:4038,1
    CyclomaticComplexity: 150
    EdgeCount: 150
    ICount: 339
    argCount: 3
    argNames:
    - d
    - n
    - child
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    - CaDecoderNode*
    assertStmts:
    - condition: (child)
      pos:
        line_end: 3514
        line_start: 3514
        source_file: /src/casync/src/cadecoder.c
    - condition: (dir_fd >= 0)
      pos:
        line_end: 3725
        line_start: 3725
        source_file: /src/casync/src/cadecoder.c
    - condition: (dir_fd >= 0)
      pos:
        line_end: 3710
        line_start: 3710
        source_file: /src/casync/src/cadecoder.c
    - condition: (subpath)
      pos:
        line_end: 3912
        line_start: 3912
        source_file: /src/casync/src/cadecoder.c
    - condition: (dir_fd >= 0)
      pos:
        line_end: 3944
        line_start: 3944
        source_file: /src/casync/src/cadecoder.c
    - condition: (dir_fd >= 0)
      pos:
        line_end: 4027
        line_start: 4027
        source_file: /src/casync/src/cadecoder.c
    - condition: (dir_fd >= 0)
      pos:
        line_end: 3663
        line_start: 3663
        source_file: /src/casync/src/cadecoder.c
    - condition: (subpath)
      pos:
        line_end: 3919
        line_start: 3919
        source_file: /src/casync/src/cadecoder.c
    - condition: (dir_fd >= 0)
      pos:
        line_end: 3563
        line_start: 3563
        source_file: /src/casync/src/cadecoder.c
    - condition: (dir_fd >= 0)
      pos:
        line_end: 3650
        line_start: 3650
        source_file: /src/casync/src/cadecoder.c
    - condition: (d)
      pos:
        line_end: 3513
        line_start: 3513
        source_file: /src/casync/src/cadecoder.c
    - condition: (dir_fd >= 0)
      pos:
        line_end: 3695
        line_start: 3695
        source_file: /src/casync/src/cadecoder.c
    - condition: (z + 1 <= (size_t) l)
      pos:
        line_end: 3817
        line_start: 3817
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 4043
      start: 3507
    functionDepth: 6
    functionLinenumber: 3507
    functionLinenumberEnd: 4043
    functionName: ca_decoder_finalize_child
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - ca_feature_flags_to_fat_attrs
    - IN_SET
    - S_ISFIFO
    - timespec_to_nsec
    - sprintf
    - streq_ptr
    - fgetfilecon
    - S_ISLNK
    - fstatat
    - S_ISSOCK
    - fremovexattr
    - newa
    - S_ISCHR
    - fsetfilecon
    - fstatfs
    - ca_decoder_node_get_fd
    - lsetfilecon
    - lremovexattr
    - CA_DECODER_IS_NAKED
    - ca_decoder_install_file
    - S_ISDIR
    - flistxattr
    - readlinkat
    - asprintf
    - ioctl
    - S_ISBLK
    - name_to_gid
    - acl_set_file
    - assert
    - fchownat
    - acl_free
    - DECIMAL_STR_MAX
    - ca_decoder_child_to_default_acl
    - fsetxattr
    - mfree
    - name_to_uid
    - mask_attr_fd
    - ca_decoder_child_to_acl
    - S_ISREG
    - ca_decoder_shift_gid
    - futimens
    - ca_decoder_node_delete
    - fchmodat
    - ca_feature_flags_to_chattr
    - gid_is_valid
    - streq
    - ca_feature_flags_time_granularity_nsec
    - realloc
    - safe_close
    - lgetfilecon
    - nsec_to_timespec
    - ca_decoder_node_reflink
    - fstat
    - strlen
    - openat
    - ca_xattr_name_store
    - uid_is_valid
    - utimensat
    - memcmp
    - mask_fat_attr_fd
    - F_TYPE_EQUAL
    - ca_decoder_shift_uid
    - read_le64
    - fchmod
    - fgetxattr
    - fchown
    - freecon
    - ca_decoder_node_mode
    linkageType: ''
    returnType: int
    signature: int ca_decoder_finalize_child(CaDecoder *d, CaDecoderNode *n, CaDecoderNode
      *child)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4046,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/cadecoder.c:4052,1
    - Dst: ca_origin_flush
      Src: /src/casync/src/cadecoder.c:4053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 4045
        line_start: 4045
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 4054
      start: 4045
    functionDepth: 1
    functionLinenumber: 4045
    functionLinenumberEnd: 4054
    functionName: ca_decoder_apply_seek_offset
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_empty
    - assert
    - ca_origin_flush
    linkageType: ''
    returnType: void
    signature: void ca_decoder_apply_seek_offset(CaDecoder *d)
  - BBCount: 61
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4060,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4061,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:4063,1
    - Dst: CA_DECODER_IS_NAKED
      Src: /src/casync/src/cadecoder.c:4068,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4069,1
    - Dst: CA_DECODER_AT_ROOT
      Src: /src/casync/src/cadecoder.c:4069,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4073,1
    - Dst: ca_decoder_step_node
      Src: /src/casync/src/cadecoder.c:4074,1
    - Dst: ca_decoder_parse_entry
      Src: /src/casync/src/cadecoder.c:4081,1
    - Dst: ca_decoder_reset_seek
      Src: /src/casync/src/cadecoder.c:4086,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4091,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/cadecoder.c:4093,1
    - Dst: ca_decoder_current_parent_node
      Src: /src/casync/src/cadecoder.c:4100,1
    - Dst: ca_decoder_realize_child
      Src: /src/casync/src/cadecoder.c:4102,1
    - Dst: log_debug_errno
      Src: /src/casync/src/cadecoder.c:4104,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:4110,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4111,1
    - Dst: ca_decoder_step_node
      Src: /src/casync/src/cadecoder.c:4112,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:4115,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4116,1
    - Dst: ca_decoder_step_node
      Src: /src/casync/src/cadecoder.c:4117,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4120,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4128,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:4128,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:4128,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4132,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4135,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cadecoder.c:4140,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cadecoder.c:4142,1
    - Dst: MIN
      Src: /src/casync/src/cadecoder.c:4144,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cadecoder.c:4144,1
    - Dst: ca_decoder_write_digest
      Src: /src/casync/src/cadecoder.c:4147,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:4147,1
    - Dst: ca_decoder_write_digest
      Src: /src/casync/src/cadecoder.c:4149,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:4149,1
    - Dst: ca_decoder_write_digest
      Src: /src/casync/src/cadecoder.c:4151,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:4151,1
    - Dst: CA_DECODER_AT_ROOT
      Src: /src/casync/src/cadecoder.c:4163,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4167,1
    - Dst: CA_DECODER_IS_NAKED
      Src: /src/casync/src/cadecoder.c:4170,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4171,1
    - Dst: ca_decoder_step_node
      Src: /src/casync/src/cadecoder.c:4172,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4182,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4194,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4205,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:4205,1
    - Dst: ca_decoder_parse_filename
      Src: /src/casync/src/cadecoder.c:4207,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4214,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:4214,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4216,1
    - Dst: ca_decoder_leave_child
      Src: /src/casync/src/cadecoder.c:4222,1
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4227,1
    - Dst: ca_decoder_finalize_child
      Src: /src/casync/src/cadecoder.c:4231,1
    - Dst: log_debug_errno
      Src: /src/casync/src/cadecoder.c:4233,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4235,1
    - Dst: ca_decoder_finalize_child
      Src: /src/casync/src/cadecoder.c:4240,1
    - Dst: ca_decoder_current_parent_node
      Src: /src/casync/src/cadecoder.c:4240,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4244,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4250,1
    - Dst: CA_DECODER_IS_NAKED
      Src: /src/casync/src/cadecoder.c:4250,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4255,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:4255,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:4255,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4257,1
    - Dst: ca_decoder_apply_seek_offset
      Src: /src/casync/src/cadecoder.c:4258,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4264,1
    - Dst: CA_DECODER_IS_NAKED
      Src: /src/casync/src/cadecoder.c:4264,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4266,1
    - Dst: ca_decoder_reset_seek
      Src: /src/casync/src/cadecoder.c:4268,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/cadecoder.c:4270,1
    - Dst: ca_decoder_step_node
      Src: /src/casync/src/cadecoder.c:4273,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4280,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:4280,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4282,1
    - Dst: ca_decoder_apply_seek_offset
      Src: /src/casync/src/cadecoder.c:4283,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4292,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:4292,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4294,1
    - Dst: ca_decoder_apply_seek_offset
      Src: /src/casync/src/cadecoder.c:4295,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4301,1
    - Dst: ca_decoder_reset_seek
      Src: /src/casync/src/cadecoder.c:4303,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/cadecoder.c:4305,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/cadecoder.c:4310,1
    - Dst: ca_decoder_step_node
      Src: /src/casync/src/cadecoder.c:4314,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4321,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:4321,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4323,1
    - Dst: ca_decoder_apply_seek_offset
      Src: /src/casync/src/cadecoder.c:4324,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4330,1
    - Dst: ca_decoder_apply_seek_offset
      Src: /src/casync/src/cadecoder.c:4331,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4340,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:4340,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4342,1
    - Dst: ca_decoder_apply_seek_offset
      Src: /src/casync/src/cadecoder.c:4343,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4352,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:4352,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:4354,1
    - Dst: ca_decoder_apply_seek_offset
      Src: /src/casync/src/cadecoder.c:4355,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4364,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:4364,1
    - Dst: ca_decoder_parse_goodbye_tail
      Src: /src/casync/src/cadecoder.c:4366,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4372,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 198
    argCount: 2
    argNames:
    - d
    - n
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    assertStmts:
    - condition: (S_ISREG(mode))
      pos:
        line_end: 4320
        line_start: 4320
        source_file: /src/casync/src/cadecoder.c
    - condition: (d->payload_offset <= n->size)
      pos:
        line_end: 4131
        line_start: 4131
        source_file: /src/casync/src/cadecoder.c
    - condition: (CA_DECODER_IS_NAKED(d))
      pos:
        line_end: 4249
        line_start: 4249
        source_file: /src/casync/src/cadecoder.c
    - condition: (S_ISDIR(mode))
      pos:
        line_end: 4363
        line_start: 4363
        source_file: /src/casync/src/cadecoder.c
    - condition: (S_ISDIR(mode))
      pos:
        line_end: 4279
        line_start: 4279
        source_file: /src/casync/src/cadecoder.c
    - condition: (false)
      pos:
        line_end: 4371
        line_start: 4371
        source_file: /src/casync/src/cadecoder.c
    - condition: (S_ISDIR(mode))
      pos:
        line_end: 4204
        line_start: 4204
        source_file: /src/casync/src/cadecoder.c
    - condition: (d)
      pos:
        line_end: 4059
        line_start: 4059
        source_file: /src/casync/src/cadecoder.c
    - condition: (CA_DECODER_AT_ROOT(d))
      pos:
        line_end: 4068
        line_start: 4068
        source_file: /src/casync/src/cadecoder.c
    - condition: (n == d->nodes)
      pos:
        line_end: 4170
        line_start: 4170
        source_file: /src/casync/src/cadecoder.c
    - condition: (S_ISDIR(mode))
      pos:
        line_end: 4213
        line_start: 4213
        source_file: /src/casync/src/cadecoder.c
    - condition: (S_ISDIR(mode))
      pos:
        line_end: 4291
        line_start: 4291
        source_file: /src/casync/src/cadecoder.c
    - condition: (S_ISREG(mode) || S_ISBLK(mode))
      pos:
        line_end: 4254
        line_start: 4254
        source_file: /src/casync/src/cadecoder.c
    - condition: (S_ISDIR(mode))
      pos:
        line_end: 4339
        line_start: 4339
        source_file: /src/casync/src/cadecoder.c
    - condition: (n)
      pos:
        line_end: 4060
        line_start: 4060
        source_file: /src/casync/src/cadecoder.c
    - condition: (S_ISREG(mode) || S_ISBLK(mode))
      pos:
        line_end: 4127
        line_start: 4127
        source_file: /src/casync/src/cadecoder.c
    - condition: (S_ISDIR(mode))
      pos:
        line_end: 4351
        line_start: 4351
        source_file: /src/casync/src/cadecoder.c
    - condition: (CA_DECODER_IS_NAKED(d))
      pos:
        line_end: 4263
        line_start: 4263
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 4376
      start: 4056
    functionDepth: 7
    functionLinenumber: 4056
    functionLinenumberEnd: 4376
    functionName: ca_decoder_step_node
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - ca_decoder_parse_entry
    - ca_decoder_leave_child
    - ca_decoder_current_node
    - MIN
    - log_debug_errno
    - ca_decoder_parse_goodbye_tail
    - CA_DECODER_IS_NAKED
    - S_ISDIR
    - ca_decoder_apply_seek_offset
    - ca_decoder_reset_seek
    - ca_decoder_realize_child
    - S_ISBLK
    - assert
    - ca_decoder_enter_state
    - realloc_buffer_data
    - ca_decoder_current_parent_node
    - S_ISREG
    - ca_decoder_write_digest
    - ca_decoder_parse_filename
    - ca_decoder_step_node
    - CA_DECODER_AT_ROOT
    - ca_decoder_finalize_child
    - ca_digest_reset
    - ca_decoder_node_mode
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_decoder_step_node(CaDecoder *d, CaDecoderNode *n)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4381,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4382,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4387,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cadecoder.c:4387,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:4394,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:4399,1
    - Dst: loop_write_with_holes
      Src: /src/casync/src/cadecoder.c:4402,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:4402,1
    - Dst: loop_write
      Src: /src/casync/src/cadecoder.c:4408,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:4408,1
    - Dst: ca_origin_new
      Src: /src/casync/src/cadecoder.c:4416,1
    - Dst: ca_origin_concat
      Src: /src/casync/src/cadecoder.c:4421,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/src/cadecoder.c:4429,1
    - Dst: ca_origin_advance_bytes
      Src: /src/casync/src/cadecoder.c:4434,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 2
    argNames:
    - d
    - n
    argTypes:
    - CaDecoder*
    - CaDecoderNode*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 4380
        line_start: 4380
        source_file: /src/casync/src/cadecoder.c
    - condition: (d->step_size <= realloc_buffer_size(&d->buffer))
      pos:
        line_end: 4386
        line_start: 4386
        source_file: /src/casync/src/cadecoder.c
    - condition: (n)
      pos:
        line_end: 4381
        line_start: 4381
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 4443
      start: 4378
    functionDepth: 2
    functionLinenumber: 4378
    functionLinenumberEnd: 4443
    functionName: ca_decoder_advance_buffer
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_data
    - loop_write
    - S_ISREG
    - ca_origin_advance_bytes
    - ca_origin_new
    - ca_origin_concat
    - assert
    - realloc_buffer_advance
    - ca_decoder_node_mode
    - loop_write_with_holes
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_decoder_advance_buffer(CaDecoder *d, CaDecoderNode *n)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4455,1
    - Dst: ca_decoder_advance_buffer
      Src: /src/casync/src/cadecoder.c:4459,1
    - Dst: ca_decoder_step_node
      Src: /src/casync/src/cadecoder.c:4463,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4464
      start: 4445
    functionDepth: 8
    functionLinenumber: 4445
    functionLinenumberEnd: 4464
    functionName: ca_decoder_step
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached:
    - ca_decoder_step_node
    - ca_decoder_current_node
    - ca_decoder_advance_buffer
    linkageType: ''
    returnType: int
    signature: int ca_decoder_step(CaDecoder *d)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cadecoder.c:4472,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4474
      start: 4466
    functionDepth: 1
    functionLinenumber: 4466
    functionLinenumberEnd: 4474
    functionName: ca_decoder_get_request_offset
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_decoder_get_request_offset(CaDecoder *d, uint64_t *ret)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_append
      Src: /src/casync/src/cadecoder.c:4492,1
    - Dst: ca_origin_new
      Src: /src/casync/src/cadecoder.c:4498,1
    - Dst: ca_origin_put_void
      Src: /src/casync/src/cadecoder.c:4504,1
    - Dst: ca_origin_concat
      Src: /src/casync/src/cadecoder.c:4506,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 4
    argNames:
    - d
    - p
    - size
    - origin
    argTypes:
    - CaDecoder*
    - void*
    - size_t
    - CaOrigin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4512
      start: 4476
    functionDepth: 1
    functionLinenumber: 4476
    functionLinenumberEnd: 4512
    functionName: ca_decoder_put_data
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 3
    functionsReached:
    - realloc_buffer_append
    - ca_origin_concat
    - ca_origin_new
    - ca_origin_put_void
    linkageType: ''
    returnType: int
    signature: int ca_decoder_put_data(CaDecoder *d, const void *p, size_t size, CaOrigin
      *origin)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4520
      start: 4514
    functionDepth: 0
    functionLinenumber: 4514
    functionLinenumberEnd: 4520
    functionName: ca_decoder_put_eof
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_put_eof(CaDecoder *d)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4533,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:4537,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:4540,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:4540,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cadecoder.c:4545,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4550,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cadecoder.c:4550,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cadecoder.c:4552,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 3
    argNames:
    - d
    - ret
    - ret_size
    argTypes:
    - CaDecoder*
    - void**
    - size_t*
    assertStmts:
    - condition: (d->step_size <= realloc_buffer_size(&d->buffer))
      pos:
        line_end: 4549
        line_start: 4549
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 4556
      start: 4522
    functionDepth: 2
    functionLinenumber: 4522
    functionLinenumberEnd: 4556
    functionName: ca_decoder_get_payload
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - realloc_buffer_data
    - S_ISREG
    - S_ISBLK
    - ca_decoder_current_node
    - assert
    - ca_decoder_node_mode
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_decoder_get_payload(CaDecoder *d, const void **ret, size_t *ret_size)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4576,1
    - Dst: strlen
      Src: /src/casync/src/cadecoder.c:4578,1
    - Dst: realloc
      Src: /src/casync/src/cadecoder.c:4581,1
    - Dst: strcpy
      Src: /src/casync/src/cadecoder.c:4589,1
    - Dst: strdup
      Src: /src/casync/src/cadecoder.c:4595,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - char**
    assertStmts:
    - condition: (node->entry)
      pos:
        line_end: 4575
        line_start: 4575
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 4603
      start: 4558
    functionDepth: 0
    functionLinenumber: 4558
    functionLinenumberEnd: 4603
    functionName: ca_decoder_current_path
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached:
    - realloc
    - strlen
    - strcpy
    - strdup
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_path(CaDecoder *d, char **ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4614,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:4618,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - mode_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4624
      start: 4605
    functionDepth: 2
    functionLinenumber: 4605
    functionLinenumberEnd: 4624
    functionName: ca_decoder_current_mode
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 3
    functionsReached:
    - ca_decoder_node_mode
    - ca_decoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_mode(CaDecoder *d, mode_t *ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4635,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:4639,1
    - Dst: S_ISLNK
      Src: /src/casync/src/cadecoder.c:4642,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4649
      start: 4626
    functionDepth: 2
    functionLinenumber: 4626
    functionLinenumberEnd: 4649
    functionName: ca_decoder_current_target
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - S_ISLNK
    - ca_decoder_node_mode
    - ca_decoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_target(CaDecoder *d, const char **ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4666,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:4673,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4675
      start: 4651
    functionDepth: 1
    functionLinenumber: 4651
    functionLinenumberEnd: 4675
    functionName: ca_decoder_current_mtime
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - read_le64
    - ca_decoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_mtime(CaDecoder *d, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4686,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:4690,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:4693,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4698
      start: 4677
    functionDepth: 2
    functionLinenumber: 4677
    functionLinenumberEnd: 4698
    functionName: ca_decoder_current_size
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - S_ISREG
    - ca_decoder_node_mode
    - ca_decoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_size(CaDecoder *d, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4713,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:4720,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4722
      start: 4700
    functionDepth: 1
    functionLinenumber: 4700
    functionLinenumberEnd: 4722
    functionName: ca_decoder_current_uid
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - read_le64
    - ca_decoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_uid(CaDecoder *d, uid_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4737,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:4744,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - gid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4746
      start: 4724
    functionDepth: 1
    functionLinenumber: 4724
    functionLinenumberEnd: 4746
    functionName: ca_decoder_current_gid
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - read_le64
    - ca_decoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_gid(CaDecoder *d, gid_t *ret)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4759,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:4776,1
    - Dst: ca_decoder_shift_uid
      Src: /src/casync/src/cadecoder.c:4777,1
    - Dst: uid_is_valid
      Src: /src/casync/src/cadecoder.c:4778,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4789
      start: 4748
    functionDepth: 2
    functionLinenumber: 4748
    functionLinenumberEnd: 4789
    functionName: ca_decoder_current_user
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - read_le64
    - ca_decoder_shift_uid
    - ca_decoder_current_node
    - uid_is_valid
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_user(CaDecoder *d, const char **ret)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4802,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:4814,1
    - Dst: ca_decoder_shift_gid
      Src: /src/casync/src/cadecoder.c:4815,1
    - Dst: gid_is_valid
      Src: /src/casync/src/cadecoder.c:4816,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4827
      start: 4791
    functionDepth: 3
    functionLinenumber: 4791
    functionLinenumberEnd: 4827
    functionName: ca_decoder_current_group
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - gid_is_valid
    - read_le64
    - ca_decoder_shift_gid
    - ca_decoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_group(CaDecoder *d, const char **ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4838,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:4842,1
    - Dst: S_ISCHR
      Src: /src/casync/src/cadecoder.c:4845,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:4845,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - dev_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4850
      start: 4829
    functionDepth: 2
    functionLinenumber: 4829
    functionLinenumberEnd: 4850
    functionName: ca_decoder_current_rdev
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - S_ISCHR
    - S_ISBLK
    - ca_decoder_node_mode
    - ca_decoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_rdev(CaDecoder *d, dev_t *ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4861,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:4865,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:4868,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:4868,1
    - Dst: ca_feature_flags_to_chattr
      Src: /src/casync/src/cadecoder.c:4873,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:4873,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - unsigned*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4875
      start: 4852
    functionDepth: 2
    functionLinenumber: 4852
    functionLinenumberEnd: 4875
    functionName: ca_decoder_current_chattr
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - S_ISDIR
    - S_ISREG
    - ca_feature_flags_to_chattr
    - ca_decoder_current_node
    - read_le64
    - ca_decoder_node_mode
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_chattr(CaDecoder *d, unsigned *ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4886,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:4890,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:4893,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:4893,1
    - Dst: ca_feature_flags_to_fat_attrs
      Src: /src/casync/src/cadecoder.c:4898,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:4898,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4900
      start: 4877
    functionDepth: 2
    functionLinenumber: 4877
    functionLinenumberEnd: 4900
    functionName: ca_decoder_current_fat_attrs
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - ca_feature_flags_to_fat_attrs
    - S_ISDIR
    - S_ISREG
    - ca_decoder_current_node
    - read_le64
    - ca_decoder_node_mode
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_fat_attrs(CaDecoder *d, uint32_t *ret)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4917,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4951,1
    - Dst: memchr
      Src: /src/casync/src/cadecoder.c:4964,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:4964,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:4965,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:4973,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 61
    argCount: 5
    argNames:
    - d
    - where
    - ret_name
    - ret_value
    - ret_size
    argTypes:
    - CaDecoder*
    - CaIterate
    - char**
    - void**
    - size_t*
    assertStmts:
    - condition: (false)
      pos:
        line_end: 4950
        line_start: 4950
        source_file: /src/casync/src/cadecoder.c
    - condition: (v)
      pos:
        line_end: 4964
        line_start: 4964
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 4986
      start: 4902
    functionDepth: 1
    functionLinenumber: 4902
    functionLinenumberEnd: 4986
    functionName: ca_decoder_current_xattr
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - assert
    - memchr
    - read_le64
    - ca_decoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_xattr(CaDecoder *d, CaIterate where, const char
      **ret_name, const void **ret_value, size_t *ret_size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:4996,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5005
      start: 4988
    functionDepth: 1
    functionLinenumber: 4988
    functionLinenumberEnd: 5005
    functionName: ca_decoder_current_quota_projid
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - ca_decoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_quota_projid(CaDecoder *d, uint32_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:5016,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:5020,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:5023,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:5023,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5028
      start: 5007
    functionDepth: 2
    functionLinenumber: 5007
    functionLinenumberEnd: 5028
    functionName: ca_decoder_current_offset
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - S_ISBLK
    - S_ISREG
    - ca_decoder_node_mode
    - ca_decoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_offset(CaDecoder *d, uint64_t *ret)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CA_DECODER_IS_NAKED
      Src: /src/casync/src/cadecoder.c:5041,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:5048,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:5052,1
    - Dst: ca_decoder_reset_seek
      Src: /src/casync/src/cadecoder.c:5056,1
    - Dst: ca_decoder_enter_state
      Src: /src/casync/src/cadecoder.c:5060,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - d
    - offset
    argTypes:
    - CaDecoder*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5065
      start: 5030
    functionDepth: 2
    functionLinenumber: 5030
    functionLinenumberEnd: 5065
    functionName: ca_decoder_seek_offset
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - ca_decoder_reset_seek
    - ca_decoder_enter_state
    - CA_DECODER_IS_NAKED
    linkageType: ''
    returnType: int
    signature: int ca_decoder_seek_offset(CaDecoder *d, uint64_t offset)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:5089,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:5092,1
    - Dst: strspn
      Src: /src/casync/src/cadecoder.c:5095,1
    - Dst: path_get_component
      Src: /src/casync/src/cadecoder.c:5106,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:5113,1
    - Dst: streq_ptr
      Src: /src/casync/src/cadecoder.c:5118,1
    - Dst: free
      Src: /src/casync/src/cadecoder.c:5119,1
    - Dst: strdup
      Src: /src/casync/src/cadecoder.c:5134,1
    - Dst: ca_decoder_reset_seek
      Src: /src/casync/src/cadecoder.c:5138,1
    - Dst: ca_decoder_forget_children
      Src: /src/casync/src/cadecoder.c:5147,1
    - Dst: ca_decoder_do_seek
      Src: /src/casync/src/cadecoder.c:5149,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 49
    argCount: 4
    argNames:
    - d
    - path
    - next_sibling
    - offset
    argTypes:
    - CaDecoder*
    - char*
    - bool
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5150
      start: 5067
    functionDepth: 4
    functionLinenumber: 5067
    functionLinenumberEnd: 5150
    functionName: ca_decoder_seek_path_internal
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - S_ISDIR
    - ca_decoder_reset_seek
    - path_get_component
    - strspn
    - streq_ptr
    - ca_decoder_do_seek
    - ca_decoder_forget_children
    - strdup
    - ca_decoder_node_mode
    - free
    linkageType: ''
    returnType: int
    signature: "int ca_decoder_seek_path_internal(\n                CaDecoder *d,\n
      \               const char *path,\n                bool next_sibling,\n                uint64_t
      offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_seek_path_internal
      Src: /src/casync/src/cadecoder.c:5153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d
    - path
    argTypes:
    - CaDecoder*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5154
      start: 5152
    functionDepth: 5
    functionLinenumber: 5152
    functionLinenumberEnd: 5154
    functionName: ca_decoder_seek_path
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - ca_decoder_seek_path_internal
    linkageType: ''
    returnType: int
    signature: int ca_decoder_seek_path(CaDecoder *d, const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_seek_path_internal
      Src: /src/casync/src/cadecoder.c:5161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - d
    - path
    - offset
    argTypes:
    - CaDecoder*
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5162
      start: 5156
    functionDepth: 5
    functionLinenumber: 5156
    functionLinenumberEnd: 5162
    functionName: ca_decoder_seek_path_offset
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - ca_decoder_seek_path_internal
    linkageType: ''
    returnType: int
    signature: int ca_decoder_seek_path_offset(CaDecoder *d, const char *path, uint64_t
      offset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_path
      Src: /src/casync/src/cadecoder.c:5171,1
    - Dst: ca_decoder_seek_path_internal
      Src: /src/casync/src/cadecoder.c:5175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5176
      start: 5164
    functionDepth: 5
    functionLinenumber: 5164
    functionLinenumberEnd: 5176
    functionName: ca_decoder_seek_next_sibling
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - ca_decoder_seek_path_internal
    - ca_decoder_current_path
    linkageType: ''
    returnType: int
    signature: int ca_decoder_seek_next_sibling(CaDecoder *d)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:5188,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5203
      start: 5178
    functionDepth: 1
    functionLinenumber: 5178
    functionLinenumberEnd: 5203
    functionName: ca_decoder_get_seek_offset
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - IN_SET
    linkageType: ''
    returnType: int
    signature: int ca_decoder_get_seek_offset(CaDecoder *d, uint64_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5222
      start: 5205
    functionDepth: 0
    functionLinenumber: 5205
    functionLinenumberEnd: 5222
    functionName: ca_decoder_get_skip_size
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_get_skip_size(CaDecoder *d, uint64_t *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - d
    - size
    argTypes:
    - CaDecoder*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5234
      start: 5224
    functionDepth: 0
    functionLinenumber: 5224
    functionLinenumberEnd: 5234
    functionName: ca_decoder_set_archive_size
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_archive_size(CaDecoder *d, uint64_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - enabled
    argTypes:
    - CaDecoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5243
      start: 5236
    functionDepth: 0
    functionLinenumber: 5236
    functionLinenumberEnd: 5243
    functionName: ca_decoder_set_punch_holes
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_punch_holes(CaDecoder *d, bool enabled)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - enabled
    argTypes:
    - CaDecoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5252
      start: 5245
    functionDepth: 0
    functionLinenumber: 5245
    functionLinenumberEnd: 5252
    functionName: ca_decoder_set_reflink
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_reflink(CaDecoder *d, bool enabled)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - enabled
    argTypes:
    - CaDecoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5261
      start: 5254
    functionDepth: 0
    functionLinenumber: 5254
    functionLinenumberEnd: 5261
    functionName: ca_decoder_set_hardlink
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_hardlink(CaDecoder *d, bool enabled)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - enabled
    argTypes:
    - CaDecoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5270
      start: 5263
    functionDepth: 0
    functionLinenumber: 5263
    functionLinenumberEnd: 5270
    functionName: ca_decoder_set_delete
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_delete(CaDecoder *d, bool enabled)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - enabled
    argTypes:
    - CaDecoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5279
      start: 5272
    functionDepth: 0
    functionLinenumber: 5272
    functionLinenumberEnd: 5279
    functionName: ca_decoder_set_payload
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_payload(CaDecoder *d, bool enabled)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - enabled
    argTypes:
    - CaDecoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5288
      start: 5281
    functionDepth: 0
    functionLinenumber: 5281
    functionLinenumberEnd: 5288
    functionName: ca_decoder_set_undo_immutable
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_undo_immutable(CaDecoder *d, bool enabled)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5301
      start: 5290
    functionDepth: 0
    functionLinenumber: 5290
    functionLinenumberEnd: 5301
    functionName: ca_decoder_get_punch_holes_bytes
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_get_punch_holes_bytes(CaDecoder *d, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5314
      start: 5303
    functionDepth: 0
    functionLinenumber: 5303
    functionLinenumberEnd: 5314
    functionName: ca_decoder_get_reflink_bytes
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_get_reflink_bytes(CaDecoder *d, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5327
      start: 5316
    functionDepth: 0
    functionLinenumber: 5316
    functionLinenumberEnd: 5327
    functionName: ca_decoder_get_hardlink_bytes
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_get_hardlink_bytes(CaDecoder *d, uint64_t *ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - u
    argTypes:
    - CaDecoder*
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5335
      start: 5329
    functionDepth: 0
    functionLinenumber: 5329
    functionLinenumberEnd: 5335
    functionName: ca_decoder_set_uid_shift
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_uid_shift(CaDecoder *d, uid_t u)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - u
    argTypes:
    - CaDecoder*
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5343
      start: 5337
    functionDepth: 0
    functionLinenumber: 5337
    functionLinenumberEnd: 5343
    functionName: ca_decoder_set_uid_range
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_set_uid_range(CaDecoder *d, uid_t u)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5353
      start: 5345
    functionDepth: 0
    functionLinenumber: 5345
    functionLinenumberEnd: 5353
    functionName: ca_decoder_current_archive_offset
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_current_archive_offset(CaDecoder *d, uint64_t *ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - b
    argTypes:
    - CaDecoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5361
      start: 5355
    functionDepth: 0
    functionLinenumber: 5355
    functionLinenumberEnd: 5361
    functionName: ca_decoder_enable_archive_digest
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_enable_archive_digest(CaDecoder *d, bool b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - b
    argTypes:
    - CaDecoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5369
      start: 5363
    functionDepth: 0
    functionLinenumber: 5363
    functionLinenumberEnd: 5369
    functionName: ca_decoder_enable_payload_digest
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_enable_payload_digest(CaDecoder *d, bool b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - d
    - b
    argTypes:
    - CaDecoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5377
      start: 5371
    functionDepth: 0
    functionLinenumber: 5371
    functionLinenumberEnd: 5377
    functionName: ca_decoder_enable_hardlink_digest
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_decoder_enable_hardlink_digest(CaDecoder *d, bool b)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_ensure_allocated
      Src: /src/casync/src/cadecoder.c:5393,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/cadecoder.c:5393,1
    - Dst: ca_digest_read
      Src: /src/casync/src/cadecoder.c:5397,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:5401,1
    - Dst: ca_digest_get_size
      Src: /src/casync/src/cadecoder.c:5401,1
    - Dst: memcpy
      Src: /src/casync/src/cadecoder.c:5402,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - CaChunkID*
    assertStmts:
    - condition: (ca_digest_get_size(d->archive_digest) == sizeof(CaChunkID))
      pos:
        line_end: 5400
        line_start: 5400
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 5404
      start: 5379
    functionDepth: 4
    functionLinenumber: 5379
    functionLinenumberEnd: 5404
    functionName: ca_decoder_get_archive_digest
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - ca_digest_get_size
    - memcpy
    - ca_digest_read
    - ca_digest_ensure_allocated
    - assert
    - ca_feature_flags_to_digest_type
    linkageType: ''
    returnType: int
    signature: int ca_decoder_get_archive_digest(CaDecoder *d, CaChunkID *ret)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:5424,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:5427,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:5430,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cadecoder.c:5430,1
    - Dst: ca_digest_ensure_allocated
      Src: /src/casync/src/cadecoder.c:5433,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/cadecoder.c:5433,1
    - Dst: ca_digest_read
      Src: /src/casync/src/cadecoder.c:5437,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:5441,1
    - Dst: ca_digest_get_size
      Src: /src/casync/src/cadecoder.c:5441,1
    - Dst: memcpy
      Src: /src/casync/src/cadecoder.c:5442,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - CaChunkID*
    assertStmts:
    - condition: (ca_digest_get_size(d->payload_digest) == sizeof(CaChunkID))
      pos:
        line_end: 5440
        line_start: 5440
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 5444
      start: 5406
    functionDepth: 4
    functionLinenumber: 5406
    functionLinenumberEnd: 5444
    functionName: ca_decoder_get_payload_digest
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - ca_digest_get_size
    - memcpy
    - S_ISREG
    - ca_feature_flags_to_digest_type
    - ca_digest_read
    - S_ISBLK
    - ca_decoder_current_node
    - ca_digest_ensure_allocated
    - assert
    - ca_decoder_node_mode
    linkageType: ''
    returnType: int
    signature: int ca_decoder_get_payload_digest(CaDecoder *d, CaChunkID *ret)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:5464,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:5467,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cadecoder.c:5470,1
    - Dst: ca_digest_ensure_allocated
      Src: /src/casync/src/cadecoder.c:5473,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/cadecoder.c:5473,1
    - Dst: ca_digest_read
      Src: /src/casync/src/cadecoder.c:5477,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:5481,1
    - Dst: ca_digest_get_size
      Src: /src/casync/src/cadecoder.c:5481,1
    - Dst: memcpy
      Src: /src/casync/src/cadecoder.c:5482,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaDecoder*
    - CaChunkID*
    assertStmts:
    - condition: (ca_digest_get_size(d->hardlink_digest) == sizeof(CaChunkID))
      pos:
        line_end: 5480
        line_start: 5480
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 5484
      start: 5446
    functionDepth: 4
    functionLinenumber: 5446
    functionLinenumberEnd: 5484
    functionName: ca_decoder_get_hardlink_digest
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 2
    functionsReached:
    - ca_digest_get_size
    - memcpy
    - S_ISDIR
    - ca_digest_read
    - ca_decoder_current_node
    - ca_feature_flags_to_digest_type
    - ca_digest_ensure_allocated
    - assert
    - ca_decoder_node_mode
    linkageType: ''
    returnType: int
    signature: int ca_decoder_get_hardlink_digest(CaDecoder *d, CaChunkID *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:5487,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaDecoder*
    assertStmts:
    - condition: (d)
      pos:
        line_end: 5486
        line_start: 5486
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 5496
      start: 5486
    functionDepth: 0
    functionLinenumber: 5486
    functionLinenumberEnd: 5496
    functionName: ca_decoder_mode_mask
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: mode_t
    signature: mode_t ca_decoder_mode_mask(CaDecoder *d)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: ca_decoder_current_parent_node
      Src: /src/casync/src/cadecoder.c:5516,1
    - Dst: ca_decoder_current_node
      Src: /src/casync/src/cadecoder.c:5522,1
    - Dst: ca_decoder_node_mode
      Src: /src/casync/src/cadecoder.c:5526,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:5529,1
    - Dst: fstatat
      Src: /src/casync/src/cadecoder.c:5532,1
    - Dst: S_ISREG
      Src: /src/casync/src/cadecoder.c:5542,1
    - Dst: ca_decoder_mode_mask
      Src: /src/casync/src/cadecoder.c:5547,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:5550,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:5553,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:5553,1
    - Dst: ca_feature_flags_time_granularity_nsec
      Src: /src/casync/src/cadecoder.c:5559,1
    - Dst: timespec_to_nsec
      Src: /src/casync/src/cadecoder.c:5563,1
    - Dst: read_le64
      Src: /src/casync/src/cadecoder.c:5563,1
    - Dst: ca_decoder_node_get_fd
      Src: /src/casync/src/cadecoder.c:5567,1
    - Dst: linkat
      Src: /src/casync/src/cadecoder.c:5571,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:5575,1
    - Dst: tempfn_random
      Src: /src/casync/src/cadecoder.c:5584,1
    - Dst: linkat
      Src: /src/casync/src/cadecoder.c:5588,1
    - Dst: IN_SET
      Src: /src/casync/src/cadecoder.c:5589,1
    - Dst: ca_decoder_install_file
      Src: /src/casync/src/cadecoder.c:5595,1
    - Dst: unlinkat
      Src: /src/casync/src/cadecoder.c:5597,1
    - Dst: assert
      Src: /src/casync/src/cadecoder.c:5603,1
    - Dst: unlinkat
      Src: /src/casync/src/cadecoder.c:5604,1
    - Dst: mfree
      Src: /src/casync/src/cadecoder.c:5607,1
    - Dst: safe_close
      Src: /src/casync/src/cadecoder.c:5608,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 75
    argCount: 3
    argNames:
    - d
    - root
    - path
    argTypes:
    - CaDecoder*
    - CaFileRoot*
    - char*
    assertStmts:
    - condition: (n->entry)
      pos:
        line_end: 5549
        line_start: 5549
        source_file: /src/casync/src/cadecoder.c
    - condition: (n->temporary_name)
      pos:
        line_end: 5602
        line_start: 5602
        source_file: /src/casync/src/cadecoder.c
    constantsTouched: []
    func_position:
      end: 5615
      start: 5498
    functionDepth: 3
    functionLinenumber: 5498
    functionLinenumberEnd: 5615
    functionName: ca_decoder_try_hardlink
    functionSourceFile: /src/casync/src/cadecoder.c
    functionUses: 1
    functionsReached:
    - ca_decoder_install_file
    - unlinkat
    - ca_decoder_node_get_fd
    - mfree
    - ca_decoder_current_parent_node
    - IN_SET
    - safe_close
    - timespec_to_nsec
    - S_ISREG
    - tempfn_random
    - linkat
    - ca_decoder_current_node
    - fstatat
    - ca_decoder_mode_mask
    - assert
    - read_le64
    - ca_feature_flags_time_granularity_nsec
    - ca_decoder_node_mode
    linkageType: ''
    returnType: int
    signature: int ca_decoder_try_hardlink(CaDecoder *d, CaFileRoot *root, const char
      *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/castore.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 59
    functionName: ca_store_new
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 2
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaStore
    signature: CaStore * ca_store_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/castore.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: ca_store_new_cache
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 1
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaStore
    signature: CaStore *ca_store_new_cache(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rm_rf
      Src: /src/casync/src/castore.c:80,1
    - Dst: free
      Src: /src/casync/src/castore.c:82,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/castore.c:83,1
    - Dst: ca_digest_free
      Src: /src/casync/src/castore.c:85,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/castore.c:86,1
    - Dst: mfree
      Src: /src/casync/src/castore.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - store
    argTypes:
    - CaStore*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 89
    functionName: ca_store_unref
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 4
    functionsReached:
    - mfree
    - rm_rf
    - ca_digest_free
    - realloc_buffer_free
    - free
    linkageType: ''
    returnType: CaStore
    signature: CaStore * ca_store_unref(CaStore *store)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: endswith
      Src: /src/casync/src/castore.c:100,1
    - Dst: strdup
      Src: /src/casync/src/castore.c:101,1
    - Dst: strjoin
      Src: /src/casync/src/castore.c:103,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - store
    - path
    argTypes:
    - CaStore*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 108
    functionName: ca_store_set_path
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 2
    functionsReached:
    - endswith
    - strjoin
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_store_set_path(CaStore *store, const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - store
    - c
    argTypes:
    - CaStore*
    - CaChunkCompression
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: ca_store_set_compression
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_store_set_compression(CaStore *store, CaChunkCompression c)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - store
    - compression_type
    argTypes:
    - CaStore*
    - CaCompressionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 132
    functionName: ca_store_set_compression_type
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_store_set_compression_type(CaStore *store, CaCompressionType
      compression_type)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/castore.c:156,1
    - Dst: ca_chunk_file_load
      Src: /src/casync/src/castore.c:158,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/castore.c:163,1
    - Dst: ca_decompress
      Src: /src/casync/src/castore.c:165,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/castore.c:165,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/castore.c:166,1
    - Dst: ca_digest_new
      Src: /src/casync/src/castore.c:176,1
    - Dst: ca_chunk_id_make
      Src: /src/casync/src/castore.c:181,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/castore.c:181,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/castore.c:181,1
    - Dst: ca_chunk_id_equal
      Src: /src/casync/src/castore.c:185,1
    - Dst: ca_digest_get_type
      Src: /src/casync/src/castore.c:193,1
    - Dst: ca_digest_set_type
      Src: /src/casync/src/castore.c:202,1
    - Dst: ca_chunk_id_make
      Src: /src/casync/src/castore.c:206,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/castore.c:206,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/castore.c:206,1
    - Dst: ca_chunk_id_equal
      Src: /src/casync/src/castore.c:210,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/castore.c:220,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/castore.c:221,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/castore.c:227,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 59
    argCount: 6
    argNames:
    - store
    - chunk_id
    - desired_compression
    - ret
    - ret_size
    - ret_effective_compression
    argTypes:
    - CaStore*
    - CaChunkID*
    - CaChunkCompression
    - void**
    - uint64_t*
    - CaChunkCompression*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 134
    functionDepth: 3
    functionLinenumber: 134
    functionLinenumberEnd: 230
    functionName: ca_store_get
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 1
    functionsReached:
    - realloc_buffer_data
    - ca_chunk_file_load
    - ca_digest_new
    - ca_digest_set_type
    - ca_chunk_id_make
    - realloc_buffer_empty
    - ca_decompress
    - ca_chunk_id_equal
    - ca_digest_get_type
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: "int ca_store_get(\n                CaStore *store,\n                const
      CaChunkID *chunk_id,\n                CaChunkCompression desired_compression,\n
      \               const void **ret,\n                uint64_t *ret_size,\n                CaChunkCompression
      *ret_effective_compression)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunk_file_test
      Src: /src/casync/src/castore.c:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - store
    - chunk_id
    argTypes:
    - CaStore*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 240
    functionName: ca_store_has
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 1
    functionsReached:
    - ca_chunk_file_test
    linkageType: ''
    returnType: int
    signature: int ca_store_has(CaStore *store, const CaChunkID *chunk_id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: var_tmp_dir
      Src: /src/casync/src/castore.c:260,1
    - Dst: asprintf
      Src: /src/casync/src/castore.c:264,1
    - Dst: random_u64
      Src: /src/casync/src/castore.c:264,1
    - Dst: mkdir
      Src: /src/casync/src/castore.c:269,1
    - Dst: ca_chunk_file_save
      Src: /src/casync/src/castore.c:275,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 5
    argNames:
    - store
    - chunk_id
    - effective_compression
    - data
    - size
    argTypes:
    - CaStore*
    - CaChunkID*
    - CaChunkCompression
    - void*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 281
    functionName: ca_store_put
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 1
    functionsReached:
    - random_u64
    - mkdir
    - asprintf
    - var_tmp_dir
    - ca_chunk_file_save
    linkageType: ''
    returnType: int
    signature: "int ca_store_put(\n                CaStore *store,\n                const
      CaChunkID *chunk_id,\n                CaChunkCompression effective_compression,\n
      \               const void *data,\n                uint64_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaStore*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 291
    functionName: ca_store_get_requests
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_store_get_requests(CaStore *s, uint64_t *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaStore*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 301
    functionName: ca_store_get_request_bytes
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_store_get_request_bytes(CaStore *s, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_set_type
      Src: /src/casync/src/castore.c:315,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - s
    - type
    argTypes:
    - CaStore*
    - CaDigestType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 303
    functionDepth: 3
    functionLinenumber: 303
    functionLinenumberEnd: 324
    functionName: ca_store_set_digest_type
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 2
    functionsReached:
    - ca_digest_set_type
    linkageType: ''
    returnType: int
    signature: int ca_store_set_digest_type(CaStore *s, CaDigestType type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/castore.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - store
    argTypes:
    - CaStore*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 336
    functionName: ca_store_iterator_new
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 1
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaStoreIterator
    signature: CaStoreIterator * ca_store_iterator_new(CaStore *store)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: closedir
      Src: /src/casync/src/castore.c:343,1
    - Dst: closedir
      Src: /src/casync/src/castore.c:345,1
    - Dst: mfree
      Src: /src/casync/src/castore.c:346,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - iter
    argTypes:
    - CaStoreIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 347
    functionName: ca_store_iterator_unref
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 1
    functionsReached:
    - closedir
    - mfree
    linkageType: ''
    returnType: CaStoreIterator
    signature: CaStoreIterator * ca_store_iterator_unref(CaStoreIterator *iter)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/casync/src/castore.c:359,1
    - Dst: readdir
      Src: /src/casync/src/castore.c:369,1
    - Dst: openat
      Src: /src/casync/src/castore.c:376,1
    - Dst: dirfd
      Src: /src/casync/src/castore.c:376,1
    - Dst: fdopendir
      Src: /src/casync/src/castore.c:384,1
    - Dst: safe_close
      Src: /src/casync/src/castore.c:386,1
    - Dst: FOREACH_DIRENT_ALL
      Src: /src/casync/src/castore.c:391,1
    - Dst: dirent_is_file_with_suffix
      Src: /src/casync/src/castore.c:392,1
    - Dst: dirfd
      Src: /src/casync/src/castore.c:396,1
    - Dst: dirfd
      Src: /src/casync/src/castore.c:400,1
    - Dst: assert_se
      Src: /src/casync/src/castore.c:406,1
    - Dst: closedir
      Src: /src/casync/src/castore.c:406,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 5
    argNames:
    - iter
    - rootdir_fd
    - subdir
    - subdir_fd
    - chunk
    argTypes:
    - CaStoreIterator*
    - int*
    - char**
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 409
    functionName: ca_store_iterator_next
    functionSourceFile: /src/casync/src/castore.c
    functionUses: 1
    functionsReached:
    - safe_close
    - FOREACH_DIRENT_ALL
    - closedir
    - openat
    - opendir
    - assert_se
    - readdir
    - dirfd
    - fdopendir
    - dirent_is_file_with_suffix
    linkageType: ''
    returnType: int
    signature: "int ca_store_iterator_next(\n                CaStoreIterator *iter,\n
      \               int *rootdir_fd,\n                const char **subdir,\n                int
      *subdir_fd,\n                const char **chunk)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:30,1
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:34,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/realloc-buffer.c:39,1
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:43,1
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:45,1
    - Dst: MAX
      Src: /src/casync/src/realloc-buffer.c:48,1
    - Dst: ALIGN_TO
      Src: /src/casync/src/realloc-buffer.c:49,1
    - Dst: page_size
      Src: /src/casync/src/realloc-buffer.c:49,1
    - Dst: realloc
      Src: /src/casync/src/realloc-buffer.c:52,1
    - Dst: malloc
      Src: /src/casync/src/realloc-buffer.c:56,1
    - Dst: memcpy
      Src: /src/casync/src/realloc-buffer.c:60,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/realloc-buffer.c:60,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/realloc-buffer.c:60,1
    - Dst: free
      Src: /src/casync/src/realloc-buffer.c:61,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 2
    argNames:
    - b
    - size
    argTypes:
    - ReallocBuffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 71
    functionName: realloc_buffer_acquire
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 2
    functionsReached:
    - ALIGN_TO
    - realloc_buffer_data
    - realloc
    - memcpy
    - _unlikely_
    - free
    - malloc
    - page_size
    - MAX
    - realloc_buffer_size
    linkageType: ''
    returnType: void
    signature: void * realloc_buffer_acquire(ReallocBuffer *b, size_t size)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:84,1
    - Dst: memset
      Src: /src/casync/src/realloc-buffer.c:88,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/realloc-buffer.c:93,1
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:97,1
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:99,1
    - Dst: MAX
      Src: /src/casync/src/realloc-buffer.c:102,1
    - Dst: ALIGN_TO
      Src: /src/casync/src/realloc-buffer.c:103,1
    - Dst: page_size
      Src: /src/casync/src/realloc-buffer.c:103,1
    - Dst: calloc
      Src: /src/casync/src/realloc-buffer.c:105,1
    - Dst: free
      Src: /src/casync/src/realloc-buffer.c:109,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - b
    - size
    argTypes:
    - ReallocBuffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 116
    functionName: realloc_buffer_acquire0
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - ALIGN_TO
    - realloc_buffer_data
    - memset
    - _unlikely_
    - MAX
    - page_size
    - calloc
    - free
    linkageType: ''
    returnType: void
    signature: void *realloc_buffer_acquire0(ReallocBuffer *b, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/realloc-buffer.c:125,1
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:128,1
    - Dst: realloc_buffer_acquire
      Src: /src/casync/src/realloc-buffer.c:131,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - b
    - add
    argTypes:
    - ReallocBuffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 136
    functionName: realloc_buffer_extend
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_acquire
    - _unlikely_
    - realloc_buffer_size
    linkageType: ''
    returnType: void
    signature: void *realloc_buffer_extend(ReallocBuffer *b, size_t add)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/realloc-buffer.c:141,1
    - Dst: memset
      Src: /src/casync/src/realloc-buffer.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - b
    - add
    argTypes:
    - ReallocBuffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 138
    functionDepth: 3
    functionLinenumber: 138
    functionLinenumberEnd: 147
    functionName: realloc_buffer_extend0
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_extend
    - memset
    linkageType: ''
    returnType: void
    signature: void *realloc_buffer_extend0(ReallocBuffer *b, size_t add)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/realloc-buffer.c:155,1
    - Dst: memcpy
      Src: /src/casync/src/realloc-buffer.c:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - b
    - p
    - size
    argTypes:
    - ReallocBuffer*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 149
    functionDepth: 3
    functionLinenumber: 149
    functionLinenumberEnd: 161
    functionName: realloc_buffer_append
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 2
    functionsReached:
    - realloc_buffer_extend
    - memcpy
    linkageType: ''
    returnType: void
    signature: void *realloc_buffer_append(ReallocBuffer *b, const void *p, size_t
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mfree
      Src: /src/casync/src/realloc-buffer.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - b
    argTypes:
    - ReallocBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 169
    functionName: realloc_buffer_free
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 3
    functionsReached:
    - mfree
    linkageType: ''
    returnType: void
    signature: void realloc_buffer_free(ReallocBuffer *b)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:183,1
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:185,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - b
    - sz
    argTypes:
    - ReallocBuffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 194
    functionName: realloc_buffer_advance
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 3
    functionsReached:
    - _unlikely_
    linkageType: ''
    returnType: int
    signature: int realloc_buffer_advance(ReallocBuffer *b, size_t sz)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:202,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/realloc-buffer.c:202,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - b
    - sz
    argTypes:
    - ReallocBuffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 213
    functionName: realloc_buffer_shorten
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 1
    functionsReached:
    - _unlikely_
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int realloc_buffer_shorten(ReallocBuffer *b, size_t sz)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:224,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/realloc-buffer.c:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - b
    - sz
    argTypes:
    - ReallocBuffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 229
    functionName: realloc_buffer_truncate
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - _unlikely_
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int realloc_buffer_truncate(ReallocBuffer *b, size_t sz)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/realloc-buffer.c:243,1
    - Dst: read
      Src: /src/casync/src/realloc-buffer.c:247,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/realloc-buffer.c:249,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/realloc-buffer.c:253,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - b
    - fd
    - add
    argTypes:
    - ReallocBuffer*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 231
    functionDepth: 3
    functionLinenumber: 231
    functionLinenumberEnd: 255
    functionName: realloc_buffer_read_size
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_extend
    - realloc_buffer_shorten
    - read
    linkageType: ''
    returnType: int
    signature: int realloc_buffer_read_size(ReallocBuffer *b, int fd, size_t add)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/realloc-buffer.c:263,1
    - Dst: realloc_buffer_read
      Src: /src/casync/src/realloc-buffer.c:266,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - b
    - fd
    - limit
    argTypes:
    - ReallocBuffer*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 270
    functionName: realloc_buffer_read_full
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_read
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int realloc_buffer_read_full(ReallocBuffer *b, int fd, size_t limit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/realloc-buffer.c:284,1
    - Dst: realloc_buffer_read_size
      Src: /src/casync/src/realloc-buffer.c:288,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - b
    - fd
    - target_size
    argTypes:
    - ReallocBuffer*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 272
    functionDepth: 4
    functionLinenumber: 272
    functionLinenumberEnd: 292
    functionName: realloc_buffer_read_target
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_read_size
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int realloc_buffer_read_target(ReallocBuffer *b, int fd, size_t target_size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/casync/src/realloc-buffer.c:304,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/realloc-buffer.c:304,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/realloc-buffer.c:304,1
    - Dst: mfree
      Src: /src/casync/src/realloc-buffer.c:308,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - b
    argTypes:
    - ReallocBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 314
    functionName: realloc_buffer_steal
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_data
    - mfree
    - memdup
    - realloc_buffer_size
    linkageType: ''
    returnType: void
    signature: void * realloc_buffer_steal(ReallocBuffer *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/realloc-buffer.c:320,1
    - Dst: realloc_buffer_append
      Src: /src/casync/src/realloc-buffer.c:323,1
    - Dst: free
      Src: /src/casync/src/realloc-buffer.c:327,1
    - Dst: free
      Src: /src/casync/src/realloc-buffer.c:331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - b
    - p
    - size
    argTypes:
    - ReallocBuffer*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 316
    functionDepth: 4
    functionLinenumber: 316
    functionLinenumberEnd: 337
    functionName: realloc_buffer_donate
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_append
    - free
    - realloc_buffer_size
    linkageType: ''
    returnType: void
    signature: void * realloc_buffer_donate(ReallocBuffer *b, void *p, size_t size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/realloc-buffer.c:352,1
    - Dst: write
      Src: /src/casync/src/realloc-buffer.c:356,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/realloc-buffer.c:356,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/src/realloc-buffer.c:360,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - b
    - fd
    argTypes:
    - ReallocBuffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 339
    functionDepth: 2
    functionLinenumber: 339
    functionLinenumberEnd: 366
    functionName: realloc_buffer_write
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - write
    - realloc_buffer_data
    - realloc_buffer_advance
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int realloc_buffer_write(ReallocBuffer *b, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/realloc-buffer.c:375,1
    - Dst: realloc_buffer_write
      Src: /src/casync/src/realloc-buffer.c:378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - b
    - fd
    argTypes:
    - ReallocBuffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 368
    functionDepth: 3
    functionLinenumber: 368
    functionLinenumberEnd: 379
    functionName: realloc_buffer_write_maybe
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_write
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int realloc_buffer_write_maybe(ReallocBuffer *b, int fd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/realloc-buffer.c:395,1
    - Dst: va_start
      Src: /src/casync/src/realloc-buffer.c:399,1
    - Dst: vsnprintf
      Src: /src/casync/src/realloc-buffer.c:400,1
    - Dst: va_end
      Src: /src/casync/src/realloc-buffer.c:401,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/realloc-buffer.c:404,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/realloc-buffer.c:408,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - b
    - fmt
    argTypes:
    - ReallocBuffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 381
    functionDepth: 3
    functionLinenumber: 381
    functionLinenumberEnd: 417
    functionName: realloc_buffer_printf
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - realloc_buffer_shorten
    - vsnprintf
    - realloc_buffer_extend
    linkageType: ''
    returnType: int
    signature: int realloc_buffer_printf(ReallocBuffer *b, const char *fmt, ...)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/realloc-buffer.c:427,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/realloc-buffer.c:431,1
    - Dst: memchr
      Src: /src/casync/src/realloc-buffer.c:432,1
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:439,1
    - Dst: _unlikely_
      Src: /src/casync/src/realloc-buffer.c:441,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - buffer
    - c
    argTypes:
    - ReallocBuffer*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 445
    functionName: realloc_buffer_memchr
    functionSourceFile: /src/casync/src/realloc-buffer.c
    functionUses: 0
    functionsReached:
    - memchr
    - realloc_buffer_data
    - _unlikely_
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int realloc_buffer_memchr(ReallocBuffer *buffer, uint8_t c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_index_unref
      Src: /src/casync/src/caindex.h:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - CaIndex**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 2
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: ca_index_unrefp
    functionSourceFile: /src/casync/src/caindex.h
    functionUses: 0
    functionsReached:
    - ca_index_unref
    linkageType: ''
    returnType: void
    signature: void ca_index_unrefp(CaIndex **i)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/cachunk.c:31,1
    - Dst: read
      Src: /src/casync/src/cachunk.c:35,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/cachunk.c:39,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - fd
    - buffer
    argTypes:
    - int
    - ReallocBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 51
    functionName: ca_load_fd
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_extend
    - realloc_buffer_shorten
    - read
    linkageType: ''
    returnType: int
    signature: int ca_load_fd(int fd, ReallocBuffer *buffer)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/cachunk.c:54,1
    - Dst: assert
      Src: /src/casync/src/cachunk.c:69,1
    - Dst: read
      Src: /src/casync/src/cachunk.c:71,1
    - Dst: detect_compression
      Src: /src/casync/src/cachunk.c:79,1
    - Dst: compressor_start_decode
      Src: /src/casync/src/cachunk.c:86,1
    - Dst: compressor_input
      Src: /src/casync/src/cachunk.c:92,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/cachunk.c:100,1
    - Dst: compressor_decode
      Src: /src/casync/src/cachunk.c:104,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/cachunk.c:108,1
    - Dst: read
      Src: /src/casync/src/cachunk.c:120,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 61
    argCount: 2
    argNames:
    - fd
    - buffer
    argTypes:
    - int
    - ReallocBuffer*
    assertStmts:
    - condition: (ccount < BUFFER_SIZE)
      pos:
        line_end: 68
        line_start: 68
        source_file: /src/casync/src/cachunk.c
    constantsTouched: []
    func_position:
      end: 142
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 142
    functionName: ca_load_and_decompress_fd
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 1
    functionsReached:
    - realloc_buffer_extend
    - realloc_buffer_shorten
    - compressor_input
    - compressor_start_decode
    - compressor_decode
    - read
    - assert
    - detect_compression
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_load_and_decompress_fd(int fd, ReallocBuffer *buffer)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/cachunk.c:145,1
    - Dst: compressor_start_encode
      Src: /src/casync/src/cachunk.c:158,1
    - Dst: read
      Src: /src/casync/src/cachunk.c:167,1
    - Dst: compressor_input
      Src: /src/casync/src/cachunk.c:177,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/cachunk.c:185,1
    - Dst: compressor_encode
      Src: /src/casync/src/cachunk.c:189,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/cachunk.c:193,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 45
    argCount: 3
    argNames:
    - fd
    - compression_type
    - buffer
    argTypes:
    - int
    - CaCompressionType
    - ReallocBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 144
    functionDepth: 3
    functionLinenumber: 144
    functionLinenumberEnd: 213
    functionName: ca_load_and_compress_fd
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 1
    functionsReached:
    - realloc_buffer_shorten
    - compressor_input
    - read
    - realloc_buffer_extend
    - compressor_start_encode
    - compressor_encode
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_load_and_compress_fd(int fd, CaCompressionType compression_type,
      ReallocBuffer *buffer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: loop_write
      Src: /src/casync/src/cachunk.c:225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - fd
    - data
    - size
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 226
    functionName: ca_save_fd
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 0
    functionsReached:
    - loop_write
    linkageType: ''
    returnType: int
    signature: int ca_save_fd(int fd, const void *data, size_t size)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/cachunk.c:229,1
    - Dst: compressor_start_encode
      Src: /src/casync/src/cachunk.c:246,1
    - Dst: compressor_input
      Src: /src/casync/src/cachunk.c:250,1
    - Dst: compressor_encode
      Src: /src/casync/src/cachunk.c:259,1
    - Dst: loop_write
      Src: /src/casync/src/cachunk.c:263,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 36
    argCount: 4
    argNames:
    - fd
    - compression_type
    - data
    - size
    argTypes:
    - int
    - CaCompressionType
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 280
    functionName: ca_save_and_compress_fd
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 1
    functionsReached:
    - loop_write
    - compressor_input
    - compressor_start_encode
    - compressor_encode
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_save_and_compress_fd(int fd, CaCompressionType compression_type,
      const void *data, size_t size)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/cachunk.c:283,1
    - Dst: detect_compression
      Src: /src/casync/src/cachunk.c:297,1
    - Dst: compressor_start_decode
      Src: /src/casync/src/cachunk.c:303,1
    - Dst: compressor_input
      Src: /src/casync/src/cachunk.c:307,1
    - Dst: compressor_decode
      Src: /src/casync/src/cachunk.c:316,1
    - Dst: loop_write
      Src: /src/casync/src/cachunk.c:320,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 3
    argNames:
    - fd
    - data
    - size
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 337
    functionName: ca_save_and_decompress_fd
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 1
    functionsReached:
    - loop_write
    - compressor_input
    - compressor_start_decode
    - compressor_decode
    - detect_compression
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_save_and_decompress_fd(int fd, const void *data, size_t size)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/cachunk.c:340,1
    - Dst: compressor_start_encode
      Src: /src/casync/src/cachunk.c:353,1
    - Dst: compressor_input
      Src: /src/casync/src/cachunk.c:357,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/cachunk.c:365,1
    - Dst: compressor_encode
      Src: /src/casync/src/cachunk.c:369,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/cachunk.c:373,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 4
    argNames:
    - compression_type
    - data
    - size
    - buffer
    argTypes:
    - CaCompressionType
    - void*
    - size_t
    - ReallocBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 339
    functionDepth: 3
    functionLinenumber: 339
    functionLinenumberEnd: 387
    functionName: ca_compress
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 2
    functionsReached:
    - realloc_buffer_shorten
    - compressor_input
    - realloc_buffer_extend
    - compressor_start_encode
    - compressor_encode
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_compress(CaCompressionType compression_type, const void *data,
      size_t size, ReallocBuffer *buffer)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/cachunk.c:390,1
    - Dst: detect_compression
      Src: /src/casync/src/cachunk.c:404,1
    - Dst: compressor_start_decode
      Src: /src/casync/src/cachunk.c:410,1
    - Dst: compressor_input
      Src: /src/casync/src/cachunk.c:414,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/cachunk.c:422,1
    - Dst: compressor_decode
      Src: /src/casync/src/cachunk.c:426,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/cachunk.c:430,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 3
    argNames:
    - data
    - size
    - buffer
    argTypes:
    - void*
    - size_t
    - ReallocBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 389
    functionDepth: 3
    functionLinenumber: 389
    functionLinenumberEnd: 444
    functionName: ca_decompress
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 2
    functionsReached:
    - realloc_buffer_shorten
    - compressor_input
    - compressor_start_decode
    - compressor_decode
    - realloc_buffer_extend
    - detect_compression
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_decompress(const void *data, size_t size, ReallocBuffer *buffer)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CA_CHUNK_ID_PATH_SIZE
      Src: /src/casync/src/cachunk.c:448,1
    - Dst: ca_chunk_id_format_path
      Src: /src/casync/src/cachunk.c:460,1
    - Dst: assert_se
      Src: /src/casync/src/cachunk.c:463,1
    - Dst: strrchr
      Src: /src/casync/src/cachunk.c:463,1
    - Dst: mkdirat
      Src: /src/casync/src/cachunk.c:466,1
    - Dst: openat
      Src: /src/casync/src/cachunk.c:475,1
    - Dst: assert
      Src: /src/casync/src/cachunk.c:480,1
    - Dst: unlinkat
      Src: /src/casync/src/cachunk.c:483,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 5
    argNames:
    - chunk_fd
    - prefix
    - chunkid
    - suffix
    - flags
    argTypes:
    - int
    - char*
    - CaChunkID*
    - char*
    - int
    assertStmts:
    - condition: (slash)
      pos:
        line_end: 479
        line_start: 479
        source_file: /src/casync/src/cachunk.c
    constantsTouched: []
    func_position:
      end: 490
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 490
    functionName: ca_chunk_file_open
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 0
    functionsReached:
    - unlinkat
    - strrchr
    - openat
    - mkdirat
    - assert_se
    - CA_CHUNK_ID_PATH_SIZE
    - assert
    - ca_chunk_id_format_path
    linkageType: ''
    returnType: int
    signature: int ca_chunk_file_open(int chunk_fd, const char *prefix, const CaChunkID
      *chunkid, const char *suffix, int flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CA_CHUNK_ID_PATH_SIZE
      Src: /src/casync/src/cachunk.c:493,1
    - Dst: ca_chunk_id_format_path
      Src: /src/casync/src/cachunk.c:500,1
    - Dst: faccessat
      Src: /src/casync/src/cachunk.c:502,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - chunk_fd
    - prefix
    - chunkid
    - suffix
    argTypes:
    - int
    - char*
    - CaChunkID*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 506
    functionName: ca_chunk_file_access
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 0
    functionsReached:
    - ca_chunk_id_format_path
    - faccessat
    - CA_CHUNK_ID_PATH_SIZE
    linkageType: ''
    returnType: int
    signature: int ca_chunk_file_access(int chunk_fd, const char *prefix, const CaChunkID
      *chunkid, const char *suffix)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CA_CHUNK_ID_PATH_SIZE
      Src: /src/casync/src/cachunk.c:509,1
    - Dst: ca_chunk_id_format_path
      Src: /src/casync/src/cachunk.c:516,1
    - Dst: unlinkat
      Src: /src/casync/src/cachunk.c:518,1
    - Dst: strrchr
      Src: /src/casync/src/cachunk.c:521,1
    - Dst: assert
      Src: /src/casync/src/cachunk.c:522,1
    - Dst: unlinkat
      Src: /src/casync/src/cachunk.c:525,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - chunk_fd
    - prefix
    - chunkid
    - suffix
    argTypes:
    - int
    - char*
    - CaChunkID*
    - char*
    assertStmts:
    - condition: (slash)
      pos:
        line_end: 521
        line_start: 521
        source_file: /src/casync/src/cachunk.c
    constantsTouched: []
    func_position:
      end: 528
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 528
    functionName: ca_chunk_file_unlink
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 0
    functionsReached:
    - unlinkat
    - strrchr
    - CA_CHUNK_ID_PATH_SIZE
    - assert
    - ca_chunk_id_format_path
    linkageType: ''
    returnType: int
    signature: int ca_chunk_file_unlink(int chunk_fd, const char *prefix, const CaChunkID
      *chunkid, const char *suffix)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CA_CHUNK_ID_PATH_SIZE
      Src: /src/casync/src/cachunk.c:531,1
    - Dst: CA_CHUNK_ID_PATH_SIZE
      Src: /src/casync/src/cachunk.c:531,1
    - Dst: ca_chunk_id_format_path
      Src: /src/casync/src/cachunk.c:539,1
    - Dst: ca_chunk_id_format_path
      Src: /src/casync/src/cachunk.c:540,1
    - Dst: rename_noreplace
      Src: /src/casync/src/cachunk.c:542,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 5
    argNames:
    - chunk_fd
    - prefix
    - chunkid
    - old_suffix
    - new_suffix
    argTypes:
    - int
    - char*
    - CaChunkID*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 547
    functionName: ca_chunk_file_rename
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 0
    functionsReached:
    - rename_noreplace
    - ca_chunk_id_format_path
    - CA_CHUNK_ID_PATH_SIZE
    linkageType: ''
    returnType: int
    signature: int ca_chunk_file_rename(int chunk_fd, const char *prefix, const CaChunkID
      *chunkid, const char *old_suffix, const char *new_suffix)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/cachunk.c:558,1
    - Dst: ca_chunk_file_open
      Src: /src/casync/src/cachunk.c:574,1
    - Dst: ca_chunk_file_open
      Src: /src/casync/src/cachunk.c:577,1
    - Dst: ca_compressed_chunk_suffix
      Src: /src/casync/src/cachunk.c:577,1
    - Dst: ca_chunk_file_open
      Src: /src/casync/src/cachunk.c:589,1
    - Dst: ca_compressed_chunk_suffix
      Src: /src/casync/src/cachunk.c:589,1
    - Dst: ca_chunk_file_open
      Src: /src/casync/src/cachunk.c:592,1
    - Dst: ca_load_and_decompress_fd
      Src: /src/casync/src/cachunk.c:604,1
    - Dst: ca_load_and_compress_fd
      Src: /src/casync/src/cachunk.c:606,1
    - Dst: ca_load_fd
      Src: /src/casync/src/cachunk.c:608,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 46
    argCount: 7
    argNames:
    - chunk_fd
    - prefix
    - chunkid
    - desired_compression
    - compression_type
    - buffer
    - ret_effective_compression
    argTypes:
    - int
    - char*
    - CaChunkID*
    - CaChunkCompression
    - CaCompressionType
    - ReallocBuffer*
    - CaChunkCompression*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 549
    functionDepth: 4
    functionLinenumber: 549
    functionLinenumberEnd: 617
    functionName: ca_chunk_file_load
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 1
    functionsReached:
    - ca_compressed_chunk_suffix
    - ca_load_and_decompress_fd
    - ca_load_and_compress_fd
    - ca_load_fd
    - ca_chunk_file_open
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: "int ca_chunk_file_load(\n                int chunk_fd,\n                const
      char *prefix,\n                const CaChunkID *chunkid,\n                CaChunkCompression
      desired_compression,\n                CaCompressionType compression_type,\n
      \               ReallocBuffer *buffer,\n                CaChunkCompression *ret_effective_compression)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunk_file_test
      Src: /src/casync/src/cachunk.c:651,1
    - Dst: asprintf
      Src: /src/casync/src/cachunk.c:657,1
    - Dst: random_u64
      Src: /src/casync/src/cachunk.c:657,1
    - Dst: _cleanup_
      Src: /src/casync/src/cachunk.c:660,1
    - Dst: ca_chunk_file_open
      Src: /src/casync/src/cachunk.c:661,1
    - Dst: loop_write
      Src: /src/casync/src/cachunk.c:669,1
    - Dst: ca_save_and_compress_fd
      Src: /src/casync/src/cachunk.c:671,1
    - Dst: assert
      Src: /src/casync/src/cachunk.c:673,1
    - Dst: ca_save_and_decompress_fd
      Src: /src/casync/src/cachunk.c:674,1
    - Dst: ca_chunk_file_rename
      Src: /src/casync/src/cachunk.c:679,1
    - Dst: ca_compressed_chunk_suffix
      Src: /src/casync/src/cachunk.c:679,1
    - Dst: ca_chunk_file_unlink
      Src: /src/casync/src/cachunk.c:686,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 50
    argCount: 8
    argNames:
    - chunk_fd
    - prefix
    - chunkid
    - effective_compression
    - desired_compression
    - compression_type
    - p
    - l
    argTypes:
    - int
    - char*
    - CaChunkID*
    - CaChunkCompression
    - CaChunkCompression
    - CaCompressionType
    - void*
    - uint64_t
    assertStmts:
    - condition: (desired_compression == CA_CHUNK_UNCOMPRESSED)
      pos:
        line_end: 672
        line_start: 672
        source_file: /src/casync/src/cachunk.c
    constantsTouched: []
    func_position:
      end: 688
      start: 619
    functionDepth: 2
    functionLinenumber: 619
    functionLinenumberEnd: 688
    functionName: ca_chunk_file_save
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 1
    functionsReached:
    - loop_write
    - ca_chunk_file_open
    - ca_compressed_chunk_suffix
    - ca_chunk_file_rename
    - random_u64
    - asprintf
    - ca_save_and_decompress_fd
    - ca_chunk_file_unlink
    - ca_chunk_file_test
    - assert
    - ca_save_and_compress_fd
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: "int ca_chunk_file_save(\n                int chunk_fd,\n                const
      char *prefix,\n                const CaChunkID *chunkid,\n                CaChunkCompression
      effective_compression,\n                CaChunkCompression desired_compression,\n
      \               CaCompressionType compression_type,\n                const void
      *p,\n                uint64_t l)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CA_CHUNK_ID_PATH_SIZE
      Src: /src/casync/src/cachunk.c:691,1
    - Dst: ca_chunk_file_test
      Src: /src/casync/src/cachunk.c:701,1
    - Dst: ca_chunk_id_format_path
      Src: /src/casync/src/cachunk.c:707,1
    - Dst: assert_se
      Src: /src/casync/src/cachunk.c:709,1
    - Dst: strrchr
      Src: /src/casync/src/cachunk.c:709,1
    - Dst: mkdirat
      Src: /src/casync/src/cachunk.c:712,1
    - Dst: symlinkat
      Src: /src/casync/src/cachunk.c:720,1
    - Dst: unlinkat
      Src: /src/casync/src/cachunk.c:726,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - chunk_fd
    - prefix
    - chunkid
    argTypes:
    - int
    - char*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 690
    functionDepth: 1
    functionLinenumber: 690
    functionLinenumberEnd: 733
    functionName: ca_chunk_file_mark_missing
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 0
    functionsReached:
    - unlinkat
    - strrchr
    - symlinkat
    - mkdirat
    - assert_se
    - CA_CHUNK_ID_PATH_SIZE
    - ca_chunk_file_test
    - ca_chunk_id_format_path
    linkageType: ''
    returnType: int
    signature: int ca_chunk_file_mark_missing(int chunk_fd, const char *prefix, const
      CaChunkID *chunkid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunk_file_access
      Src: /src/casync/src/cachunk.c:743,1
    - Dst: ca_compressed_chunk_suffix
      Src: /src/casync/src/cachunk.c:743,1
    - Dst: ca_chunk_file_access
      Src: /src/casync/src/cachunk.c:747,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - chunk_fd
    - prefix
    - chunkid
    argTypes:
    - int
    - char*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 735
    functionDepth: 2
    functionLinenumber: 735
    functionLinenumberEnd: 748
    functionName: ca_chunk_file_test
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 3
    functionsReached:
    - ca_compressed_chunk_suffix
    - ca_chunk_file_access
    linkageType: ''
    returnType: int
    signature: int ca_chunk_file_test(int chunk_fd, const char *prefix, const CaChunkID
      *chunkid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunk_file_unlink
      Src: /src/casync/src/cachunk.c:758,1
    - Dst: ca_chunk_file_unlink
      Src: /src/casync/src/cachunk.c:762,1
    - Dst: ca_compressed_chunk_suffix
      Src: /src/casync/src/cachunk.c:762,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - chunk_fd
    - prefix
    - chunkid
    argTypes:
    - int
    - char*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 750
    functionDepth: 2
    functionLinenumber: 750
    functionLinenumberEnd: 763
    functionName: ca_chunk_file_remove
    functionSourceFile: /src/casync/src/cachunk.c
    functionUses: 0
    functionsReached:
    - ca_chunk_file_unlink
    - ca_compressed_chunk_suffix
    linkageType: ''
    returnType: int
    signature: int ca_chunk_file_remove(int chunk_fd, const char *prefix, const CaChunkID
      *chunkid)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/parse-util.c:37,1
    - Dst: assert
      Src: /src/casync/src/parse-util.c:38,1
    - Dst: ELEMENTSOF
      Src: /src/casync/src/parse-util.c:40,1
    - Dst: strspn
      Src: /src/casync/src/parse-util.c:49,1
    - Dst: strtoull
      Src: /src/casync/src/parse-util.c:55,1
    - Dst: strtoull
      Src: /src/casync/src/parse-util.c:69,1
    - Dst: strspn
      Src: /src/casync/src/parse-util.c:80,1
    - Dst: startswith
      Src: /src/casync/src/parse-util.c:82,1
    - Dst: strlen
      Src: /src/casync/src/parse-util.c:99,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 2
    argNames:
    - t
    - size
    argTypes:
    - char*
    - uint64_t*
    assertStmts:
    - condition: (t)
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/casync/src/parse-util.c
    - condition: (size)
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/casync/src/parse-util.c
    constantsTouched: []
    func_position:
      end: 108
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 108
    functionName: parse_size
    functionSourceFile: /src/casync/src/parse-util.c
    functionUses: 0
    functionsReached:
    - startswith
    - ELEMENTSOF
    - strlen
    - strspn
    - strtoull
    - assert
    linkageType: ''
    returnType: int
    signature: int parse_size(const char *t, uint64_t *size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:119,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:119,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:119,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:119,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:119,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:119,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:120,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:120,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:120,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:120,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:120,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:121,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:121,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:121,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:121,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:122,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:122,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:122,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:123,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:123,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:124,1
    - Dst: ELEMENTSOF
      Src: /src/casync/src/parse-util.c:130,1
    - Dst: snprintf
      Src: /src/casync/src/parse-util.c:133,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:136,1
    - Dst: UINT64_C
      Src: /src/casync/src/parse-util.c:136,1
    - Dst: snprintf
      Src: /src/casync/src/parse-util.c:143,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - buf
    - l
    - t
    argTypes:
    - char*
    - size_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 149
    functionName: format_bytes
    functionSourceFile: /src/casync/src/parse-util.c
    functionUses: 0
    functionsReached:
    - ELEMENTSOF
    - UINT64_C
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *format_bytes(char *buf, size_t l, uint64_t t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: new
    functionSourceFile: /src/casync/src/util.h
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: new(t, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: new0
    functionSourceFile: /src/casync/src/util.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: new0(t, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: newa
    functionSourceFile: /src/casync/src/util.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newa(t, n)
  - 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: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: XCONCATENATE
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XCONCATENATE(x, y)
  - 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: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: CONCATENATE
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONCATENATE(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - uniq
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: UNIQ_T
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNIQ_T(x, uniq)
  - 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: MAX
    functionSourceFile: /src/casync/src/util.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAX(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - aq
    - ','
    - a
    - ','
    - bq
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 46
    functionName: __MAX
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __MAX(aq, a, bq, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: MAX3
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAX3(a, b, c)
  - 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: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: MIN
    functionSourceFile: /src/casync/src/util.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MIN(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - aq
    - ','
    - a
    - ','
    - bq
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 57
    functionName: __MIN
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __MIN(aq, a, bq, 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: 65
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 65
    functionName: CONST_MAX
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONST_MAX(_A, _B)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/casync/src/util.h:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: mfree
    functionSourceFile: /src/casync/src/util.h
    functionUses: 19
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void * mfree(void* p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/src/util.h:87,1
    - Dst: close
      Src: /src/casync/src/util.h:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - above
    - fd
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: safe_close_above
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - assert_se
    - close
    linkageType: ''
    returnType: int
    signature: int safe_close_above(int above, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safe_close_above
      Src: /src/casync/src/util.h:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: safe_close
    functionSourceFile: /src/casync/src/util.h
    functionUses: 14
    functionsReached:
    - safe_close_above
    linkageType: ''
    returnType: int
    signature: int safe_close(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safe_close
      Src: /src/casync/src/util.h:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 3
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: safe_closep
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - safe_close
    linkageType: ''
    returnType: int
    signature: int safe_closep(int *fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safe_close_above
      Src: /src/casync/src/util.h:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: safe_close_nonstdp
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - safe_close_above
    linkageType: ''
    returnType: void
    signature: void safe_close_nonstdp(int *fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/casync/src/util.h:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 111
    functionName: safe_fclose
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - fclose
    linkageType: ''
    returnType: FILE
    signature: FILE *safe_fclose(FILE *f)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/casync/src/util.h:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - FILE**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: safe_fclosep
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - fclose
    linkageType: ''
    returnType: void
    signature: void safe_fclosep(FILE **f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.h:124,1
    - Dst: memcpy
      Src: /src/casync/src/util.h:125,1
    - Dst: le64toh
      Src: /src/casync/src/util.h:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts:
    - condition: (p)
      pos:
        line_end: 123
        line_start: 123
        source_file: /src/casync/src/util.h
    constantsTouched: []
    func_position:
      end: 127
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 127
    functionName: read_le64
    functionSourceFile: /src/casync/src/util.h
    functionUses: 42
    functionsReached:
    - assert
    - le64toh
    - memcpy
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t read_le64(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.h:131,1
    - Dst: memcpy
      Src: /src/casync/src/util.h:132,1
    - Dst: le32toh
      Src: /src/casync/src/util.h:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts:
    - condition: (p)
      pos:
        line_end: 130
        line_start: 130
        source_file: /src/casync/src/util.h
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: read_le32
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - assert
    - le32toh
    - memcpy
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t read_le32(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.h:138,1
    - Dst: memcpy
      Src: /src/casync/src/util.h:139,1
    - Dst: le16toh
      Src: /src/casync/src/util.h:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts:
    - condition: (p)
      pos:
        line_end: 137
        line_start: 137
        source_file: /src/casync/src/util.h
    constantsTouched: []
    func_position:
      end: 141
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 141
    functionName: read_le16
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - assert
    - le16toh
    - memcpy
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t read_le16(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.h:144,1
    - Dst: htole64
      Src: /src/casync/src/util.h:145,1
    - Dst: memcpy
      Src: /src/casync/src/util.h:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - p
    - u
    argTypes:
    - void*
    - uint64_t
    assertStmts:
    - condition: (p)
      pos:
        line_end: 143
        line_start: 143
        source_file: /src/casync/src/util.h
    constantsTouched: []
    func_position:
      end: 147
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 147
    functionName: write_le64
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - assert
    - memcpy
    - htole64
    linkageType: ''
    returnType: void
    signature: void write_le64(void *p, uint64_t u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.h:150,1
    - Dst: htole32
      Src: /src/casync/src/util.h:151,1
    - Dst: memcpy
      Src: /src/casync/src/util.h:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - p
    - u
    argTypes:
    - void*
    - uint32_t
    assertStmts:
    - condition: (p)
      pos:
        line_end: 149
        line_start: 149
        source_file: /src/casync/src/util.h
    constantsTouched: []
    func_position:
      end: 153
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 153
    functionName: write_le32
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - htole32
    - assert
    - memcpy
    linkageType: ''
    returnType: void
    signature: void write_le32(void *p, uint32_t u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.h:156,1
    - Dst: htole16
      Src: /src/casync/src/util.h:157,1
    - Dst: memcpy
      Src: /src/casync/src/util.h:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - p
    - u
    argTypes:
    - void*
    - uint16_t
    assertStmts:
    - condition: (p)
      pos:
        line_end: 155
        line_start: 155
        source_file: /src/casync/src/util.h
    constantsTouched: []
    func_position:
      end: 159
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 159
    functionName: write_le16
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - htole16
    - assert
    - memcpy
    linkageType: ''
    returnType: void
    signature: void write_le16(void *p, uint16_t u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/casync/src/util.h:164,1
    - Dst: memcpy
      Src: /src/casync/src/util.h:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - p
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 170
    functionName: memdup
    functionSourceFile: /src/casync/src/util.h
    functionUses: 4
    functionsReached:
    - memcpy
    - malloc
    linkageType: ''
    returnType: void
    signature: void * memdup(const void *p, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dev_urandom
      Src: /src/casync/src/util.h:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 178
    functionName: random_u64
    functionSourceFile: /src/casync/src/util.h
    functionUses: 4
    functionsReached:
    - dev_urandom
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t random_u64(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 181
    functionName: random_bytes
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: random_bytes(p, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 183
    functionName: assert_cc
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assert_cc(expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 185
    functionName: CASE_F
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CASE
    - ','
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    functionName: CASE_F_1
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_1(CASE, X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 187
    functionName: CASE_F_2
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_2(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 188
    functionName: CASE_F_3
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_3(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    functionName: CASE_F_4
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_4(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 190
    functionName: CASE_F_5
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_5(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: CASE_F_6
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_6(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 192
    functionName: CASE_F_7
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_7(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 193
    functionName: CASE_F_8
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_8(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 194
    functionName: CASE_F_9
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_9(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 195
    functionName: CASE_F_10
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_10(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 196
    functionName: CASE_F_11
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_11(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 197
    functionName: CASE_F_12
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_12(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 198
    functionName: CASE_F_13
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_13(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 199
    functionName: CASE_F_14
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_14(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 200
    functionName: CASE_F_15
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_15(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 201
    functionName: CASE_F_16
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_16(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 202
    functionName: CASE_F_17
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_17(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: CASE_F_18
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_18(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 204
    functionName: CASE_F_19
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_19(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CASE
    - ','
    - X
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 205
    functionName: CASE_F_20
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_F_20(CASE, X, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 45
    argNames:
    - (
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - _4
    - ','
    - _5
    - ','
    - _6
    - ','
    - _7
    - ','
    - _8
    - ','
    - _9
    - ','
    - _10
    - ','
    - _11
    - ','
    - _12
    - ','
    - _13
    - ','
    - _14
    - ','
    - _15
    - ','
    - _16
    - ','
    - _17
    - ','
    - _18
    - ','
    - _19
    - ','
    - _20
    - ','
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 207
    functionName: GET_CASE_F
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_CASE_F(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,NAME,...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 211
    functionName: FOR_EACH_MAKE_CASE
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_EACH_MAKE_CASE(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 215
    functionName: IN_SET
    functionSourceFile: /src/casync/src/util.h
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IN_SET(x, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 238
    functionName: isempty
    functionSourceFile: /src/casync/src/util.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isempty(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 242
    functionName: strempty
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *strempty(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 246
    functionName: strnone
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *strnone(const char *p)
  - 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: 249
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 249
    functionName: streq
    functionSourceFile: /src/casync/src/util.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: streq(a,b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/casync/src/util.h:256,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 257
    functionName: streq_ptr
    functionSourceFile: /src/casync/src/util.h
    functionUses: 4
    functionsReached:
    - streq
    linkageType: ''
    returnType: bool
    signature: bool streq_ptr(const char *a, const char *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 261
    functionName: strna
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *strna(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 268
    functionName: strjoin
    functionSourceFile: /src/casync/src/util.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strjoin(a, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safe_atollu
      Src: /src/casync/src/util.h:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - ret_u
    argTypes:
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 286
    functionName: safe_atou64
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - safe_atollu
    linkageType: ''
    returnType: int
    signature: int safe_atou64(const char *s, uint64_t *ret_u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safe_atou
      Src: /src/casync/src/util.h:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - ret_u
    argTypes:
    - char*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 290
    functionName: safe_atou32
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - safe_atou
    linkageType: ''
    returnType: int
    signature: int safe_atou32(const char *s, uint32_t *ret_u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safe_atollx
      Src: /src/casync/src/util.h:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - ret_u
    argTypes:
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 294
    functionName: safe_atox64
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - safe_atollx
    linkageType: ''
    returnType: int
    signature: int safe_atox64(const char *s, uint64_t *ret_u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 313
    functionName: strjoina
    functionSourceFile: /src/casync/src/util.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strjoina(a, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 322
    functionName: ELEMENTSOF
    functionSourceFile: /src/casync/src/util.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ELEMENTSOF(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - l
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 331
    functionName: strv_contains
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strv_contains(l, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - size
    - need
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 334
    functionName: size_multiply_overflow
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool size_multiply_overflow(size_t size, size_t need)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _unlikely_
      Src: /src/casync/src/util.h:337,1
    - Dst: size_multiply_overflow
      Src: /src/casync/src/util.h:337,1
    - Dst: malloc
      Src: /src/casync/src/util.h:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - size
    - need
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 341
    functionName: malloc_multiply
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - size_multiply_overflow
    - _unlikely_
    - malloc
    linkageType: ''
    returnType: void
    signature: void *malloc_multiply(size_t size, size_t need)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _unlikely_
      Src: /src/casync/src/util.h:344,1
    - Dst: size_multiply_overflow
      Src: /src/casync/src/util.h:344,1
    - Dst: realloc
      Src: /src/casync/src/util.h:347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - p
    - size
    - need
    argTypes:
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 348
    functionName: realloc_multiply
    functionSourceFile: /src/casync/src/util.h
    functionUses: 3
    functionsReached:
    - size_multiply_overflow
    - _unlikely_
    - realloc
    linkageType: ''
    returnType: void
    signature: void *realloc_multiply(void *p, size_t size, size_t need)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 352
    functionName: STRV_FOREACH
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRV_FOREACH(s, l)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 369
    functionName: dot_or_dot_dot
    functionSourceFile: /src/casync/src/util.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dot_or_dot_dot(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uid_is_valid
      Src: /src/casync/src/util.h:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - gid
    argTypes:
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 404
    functionName: gid_is_valid
    functionSourceFile: /src/casync/src/util.h
    functionUses: 4
    functionsReached:
    - uid_is_valid
    linkageType: ''
    returnType: bool
    signature: bool gid_is_valid(gid_t gid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parse_uid
      Src: /src/casync/src/util.h:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - ret_gid
    argTypes:
    - char*
    - gid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 410
    functionName: parse_gid
    functionSourceFile: /src/casync/src/util.h
    functionUses: 1
    functionsReached:
    - parse_uid
    linkageType: ''
    returnType: int
    signature: int parse_gid(const char *s, gid_t *ret_gid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: safe_close
      Src: /src/casync/src/util.h:432,1
    - Dst: safe_close
      Src: /src/casync/src/util.h:433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pair
    argTypes:
    - int[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 428
    functionDepth: 3
    functionLinenumber: 428
    functionLinenumberEnd: 434
    functionName: safe_close_pair
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - safe_close
    linkageType: ''
    returnType: void
    signature: void safe_close_pair(int pair[2])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/casync/src/util.h:439,1
    - Dst: strncmp
      Src: /src/casync/src/util.h:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - s
    - prefix
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 444
    functionName: startswith
    functionSourceFile: /src/casync/src/util.h
    functionUses: 2
    functionsReached:
    - strlen
    - strncmp
    linkageType: ''
    returnType: char
    signature: char *startswith(const char *s, const char *prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 448
    functionName: strv_isempty
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool strv_isempty(char **l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/casync/src/util.h:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - oldfd
    - oldname
    - newfd
    - newname
    - flags
    argTypes:
    - int
    - char*
    - int
    - char*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 502
    functionName: renameat2
    functionSourceFile: /src/casync/src/util.h
    functionUses: 1
    functionsReached:
    - syscall
    linkageType: ''
    returnType: int
    signature: int renameat2(int oldfd, const char *oldname, int newfd, const char
      *newname, unsigned flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/casync/src/util.h:513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 514
    functionName: strlen_null
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t strlen_null(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 517
    functionName: STRV_MAKE
    functionSourceFile: /src/casync/src/util.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRV_MAKE(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 522
    functionName: FOREACH_STRING
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_STRING(x, y, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 524
    functionName: STR_IN_SET
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR_IN_SET(x, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isempty
      Src: /src/casync/src/util.h:526,1
    - Dst: streq
      Src: /src/casync/src/util.h:528,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 532
    functionName: empty_or_dash_to_null
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - streq
    - isempty
    linkageType: ''
    returnType: char
    signature: char *empty_or_dash_to_null(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - l
    - ali
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 538
    functionName: ALIGN_TO
    functionSourceFile: /src/casync/src/util.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t ALIGN_TO(size_t l, size_t ali)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 539
    functionDepth: 0
    functionLinenumber: 539
    functionLinenumberEnd: 540
    functionName: PAGE_ALIGN
    functionSourceFile: /src/casync/src/util.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PAGE_ALIGN(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 543
    functionName: ALIGN8
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALIGN8(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 544
    functionName: ALIGN
    functionSourceFile: /src/casync/src/util.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALIGN(l)
  - 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: 550
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 550
    functionName: strcaseeq
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strcaseeq(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - statfs_f_type_t
    - statfs_f_type_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 555
    functionName: F_TYPE_EQUAL
    functionSourceFile: /src/casync/src/util.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool F_TYPE_EQUAL(statfs_f_type_t a, statfs_f_type_t b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.h:558,1
    - Dst: F_TYPE_EQUAL
      Src: /src/casync/src/util.h:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - s
    - magic_value
    argTypes:
    - struct statfs*
    - statfs_f_type_t
    assertStmts:
    - condition: (s)
      pos:
        line_end: 557
        line_start: 557
        source_file: /src/casync/src/util.h
    constantsTouched: []
    func_position:
      end: 560
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 560
    functionName: is_fs_type
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - assert
    - F_TYPE_EQUAL
    linkageType: ''
    returnType: bool
    signature: bool is_fs_type(const struct statfs *s, statfs_f_type_t magic_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_fs_type
      Src: /src/casync/src/util.h:563,1
    - Dst: is_fs_type
      Src: /src/casync/src/util.h:564,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct statfs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 562
    functionDepth: 2
    functionLinenumber: 562
    functionLinenumberEnd: 565
    functionName: is_temporary_fs
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - is_fs_type
    linkageType: ''
    returnType: bool
    signature: bool is_temporary_fs(const struct statfs *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 568
    functionName: IS_POWER_OF_TWO
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_POWER_OF_TWO(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - b
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 569
    functionDepth: 0
    functionLinenumber: 569
    functionLinenumberEnd: 571
    functionName: yes_no
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *yes_no(bool b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 616
    functionDepth: 0
    functionLinenumber: 616
    functionLinenumberEnd: 617
    functionName: PTR_TO_INT
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR_TO_INT(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 617
    functionDepth: 0
    functionLinenumber: 617
    functionLinenumberEnd: 618
    functionName: INT_TO_PTR
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INT_TO_PTR(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 618
    functionDepth: 0
    functionLinenumber: 618
    functionLinenumberEnd: 619
    functionName: PTR_TO_UINT
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR_TO_UINT(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 620
    functionName: UINT_TO_PTR
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UINT_TO_PTR(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - allocated
    - ','
    - need
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 624
    functionDepth: 0
    functionLinenumber: 624
    functionLinenumberEnd: 626
    functionName: GREEDY_REALLOC
    functionSourceFile: /src/casync/src/util.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GREEDY_REALLOC(array, allocated, need)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array
    - ','
    - allocated
    - ','
    - need
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 629
    functionName: GREEDY_REALLOC0
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GREEDY_REALLOC0(array, allocated, need)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 630
    functionDepth: 0
    functionLinenumber: 630
    functionLinenumberEnd: 637
    functionName: alloca0
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: alloca0(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 638
    functionDepth: 0
    functionLinenumber: 638
    functionLinenumberEnd: 639
    functionName: memzero
    functionSourceFile: /src/casync/src/util.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: memzero(x,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 640
    functionName: zero
    functionSourceFile: /src/casync/src/util.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zero(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 641
    functionName: malloc0
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: malloc0(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/casync/src/util.h:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - s
    - c
    - n
    argTypes:
    - void*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 645
    functionName: mempset
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void *mempset(void *s, int c, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 652
    functionName: DECIMAL_STR_MAX
    functionSourceFile: /src/casync/src/util.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECIMAL_STR_MAX(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 666
    functionName: SOCKADDR_UN_LEN
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOCKADDR_UN_LEN(sa)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - x
    - i
    argTypes:
    - uint32_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 674
    functionName: rol32
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rol32(uint32_t x, size_t i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.h:677,1
    - Dst: __builtin_clz
      Src: /src/casync/src/util.h:679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - x
    argTypes:
    - unsigned
    assertStmts:
    - condition: (x > 0)
      pos:
        line_end: 676
        line_start: 676
        source_file: /src/casync/src/util.h
    constantsTouched: []
    func_position:
      end: 680
      start: 676
    functionDepth: 0
    functionLinenumber: 676
    functionLinenumberEnd: 680
    functionName: log2u
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - assert
    - __builtin_clz
    linkageType: ''
    returnType: unsigned
    signature: unsigned log2u(unsigned x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.h:683,1
    - Dst: log2u
      Src: /src/casync/src/util.h:688,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - x
    argTypes:
    - unsigned
    assertStmts:
    - condition: (x > 0)
      pos:
        line_end: 682
        line_start: 682
        source_file: /src/casync/src/util.h
    constantsTouched: []
    func_position:
      end: 689
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 689
    functionName: log2u_round_up
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - log2u
    - assert
    linkageType: ''
    returnType: unsigned
    signature: unsigned log2u_round_up(unsigned x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 703
    functionDepth: 0
    functionLinenumber: 703
    functionLinenumberEnd: 705
    functionName: path_is_absolute
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool path_is_absolute(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 737
    functionDepth: 0
    functionLinenumber: 737
    functionLinenumberEnd: 738
    functionName: _cleanup_
    functionSourceFile: /src/casync/src/util.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _cleanup_(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - func
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 739
    functionDepth: 0
    functionLinenumber: 739
    functionLinenumberEnd: 745
    functionName: DEFINE_TRIVIAL_CLEANUP_FUNC
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_TRIVIAL_CLEANUP_FUNC(type, func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/casync/src/util.h:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 746
    functionDepth: 0
    functionLinenumber: 746
    functionLinenumberEnd: 748
    functionName: freep
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void freep(void *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/casync/src/util.h:759,1
    - Dst: free
      Src: /src/casync/src/util.h:762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 763
    functionName: unlink_and_free
    functionSourceFile: /src/casync/src/util.h
    functionUses: 0
    functionsReached:
    - unlink
    - free
    linkageType: ''
    returnType: void
    signature: void unlink_and_free(char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - error
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 773
    functionDepth: 0
    functionLinenumber: 773
    functionLinenumberEnd: 775
    functionName: ERRNO_IS_UNSUPPORTED
    functionSourceFile: /src/casync/src/util.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERRNO_IS_UNSUPPORTED(error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/casync/src/copy.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - fd_in
    - off_in
    - fd_out
    - off_out
    - len
    - flags
    argTypes:
    - int
    - loff_t*
    - int
    - loff_t*
    - size_t
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 36
    functionName: copy_file_range
    functionSourceFile: /src/casync/src/copy.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t copy_file_range(\n                int fd_in, loff_t *off_in,\n
      \               int fd_out, loff_t *off_out,\n                size_t len,\n
      \               unsigned flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: copy_file_range
      Src: /src/casync/src/copy.c:51,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 6
    argNames:
    - fd_in
    - off_in
    - fd_out
    - off_out
    - len
    - flags
    argTypes:
    - int
    - loff_t*
    - int
    - loff_t*
    - size_t
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 58
    functionName: try_copy_file_range
    functionSourceFile: /src/casync/src/copy.c
    functionUses: 0
    functionsReached:
    - copy_file_range
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t try_copy_file_range(\n                int fd_in, loff_t *off_in,\n
      \               int fd_out, loff_t *off_out,\n                size_t len,\n
      \               unsigned flags)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/copy.c:65,1
    - Dst: assert
      Src: /src/casync/src/copy.c:66,1
    - Dst: try_copy_file_range
      Src: /src/casync/src/copy.c:81,1
    - Dst: IN_SET
      Src: /src/casync/src/copy.c:83,1
    - Dst: sendfile
      Src: /src/casync/src/copy.c:97,1
    - Dst: IN_SET
      Src: /src/casync/src/copy.c:99,1
    - Dst: splice
      Src: /src/casync/src/copy.c:113,1
    - Dst: IN_SET
      Src: /src/casync/src/copy.c:115,1
    - Dst: MIN
      Src: /src/casync/src/copy.c:129,1
    - Dst: read
      Src: /src/casync/src/copy.c:131,1
    - Dst: loop_write
      Src: /src/casync/src/copy.c:137,1
    - Dst: assert
      Src: /src/casync/src/copy.c:144,1
    - Dst: MAX
      Src: /src/casync/src/copy.c:151,1
    - Dst: MIN
      Src: /src/casync/src/copy.c:151,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 64
    argCount: 3
    argNames:
    - fdf
    - fdt
    - max_bytes
    argTypes:
    - int
    - int
    - uint64_t
    assertStmts:
    - condition: (fdf >= 0)
      pos:
        line_end: 64
        line_start: 64
        source_file: /src/casync/src/copy.c
    - condition: (fdt >= 0)
      pos:
        line_end: 65
        line_start: 65
        source_file: /src/casync/src/copy.c
    - condition: (max_bytes >= (uint64_t) n)
      pos:
        line_end: 143
        line_start: 143
        source_file: /src/casync/src/copy.c
    constantsTouched: []
    func_position:
      end: 155
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 155
    functionName: copy_bytes
    functionSourceFile: /src/casync/src/copy.c
    functionUses: 0
    functionsReached:
    - sendfile
    - loop_write
    - IN_SET
    - try_copy_file_range
    - assert
    - read
    - MAX
    - splice
    - MIN
    linkageType: ''
    returnType: int
    signature: int copy_bytes(int fdf, int fdt, uint64_t max_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - byte
    - ','
    - state
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: siphash24_compress_byte
    functionSourceFile: /src/casync/src/siphash24.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: siphash24_compress_byte(byte, state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: siphash24_compress
      Src: /src/casync/src/hash-funcs.c:24,1
    - Dst: strlen
      Src: /src/casync/src/hash-funcs.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - state
    argTypes:
    - void*
    - struct siphash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 25
    functionName: string_hash_func
    functionSourceFile: /src/casync/src/hash-funcs.c
    functionUses: 0
    functionsReached:
    - strlen
    - siphash24_compress
    linkageType: ''
    returnType: void
    signature: void string_hash_func(const void *p, struct siphash *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/casync/src/hash-funcs.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: string_compare_func
    functionSourceFile: /src/casync/src/hash-funcs.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int string_compare_func(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: siphash24_compress
      Src: /src/casync/src/hash-funcs.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - state
    argTypes:
    - void*
    - struct siphash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: trivial_hash_func
    functionSourceFile: /src/casync/src/hash-funcs.c
    functionUses: 0
    functionsReached:
    - siphash24_compress
    linkageType: ''
    returnType: void
    signature: void trivial_hash_func(const void *p, struct siphash *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: trivial_compare_func
    functionSourceFile: /src/casync/src/hash-funcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int trivial_compare_func(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: siphash24_compress
      Src: /src/casync/src/hash-funcs.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - state
    argTypes:
    - void*
    - struct siphash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: uint64_hash_func
    functionSourceFile: /src/casync/src/hash-funcs.c
    functionUses: 0
    functionsReached:
    - siphash24_compress
    linkageType: ''
    returnType: void
    signature: void uint64_hash_func(const void *p, struct siphash *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - _a
    - _b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: uint64_compare_func
    functionSourceFile: /src/casync/src/hash-funcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int uint64_compare_func(const void *_a, const void *_b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/casync/src/util.c:35,1
    - Dst: assert
      Src: /src/casync/src/util.c:39,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - fd
    - p
    - l
    argTypes:
    - int
    - void*
    - size_t
    assertStmts:
    - condition: ((size_t) w <= l)
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 46
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 46
    functionName: loop_write
    functionSourceFile: /src/casync/src/util.c
    functionUses: 10
    functionsReached:
    - assert
    - write
    linkageType: ''
    returnType: int
    signature: int loop_write(int fd, const void *p, size_t l)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/casync/src/util.c:57,1
    - Dst: poll
      Src: /src/casync/src/util.c:66,1
    - Dst: assert
      Src: /src/casync/src/util.c:75,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - fd
    - p
    - l
    argTypes:
    - int
    - void*
    - size_t
    assertStmts:
    - condition: ((size_t) w <= l)
      pos:
        line_end: 74
        line_start: 74
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 82
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 82
    functionName: loop_write_block
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - assert
    - poll
    - write
    linkageType: ''
    returnType: int
    signature: int loop_write_block(int fd, const void *p, size_t l)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/casync/src/util.c:100,1
    - Dst: lseek
      Src: /src/casync/src/util.c:107,1
    - Dst: fallocate
      Src: /src/casync/src/util.c:112,1
    - Dst: lseek
      Src: /src/casync/src/util.c:114,1
    - Dst: ftruncate
      Src: /src/casync/src/util.c:122,1
    - Dst: lseek
      Src: /src/casync/src/util.c:126,1
    - Dst: MIN
      Src: /src/casync/src/util.c:132,1
    - Dst: alloca0
      Src: /src/casync/src/util.c:133,1
    - Dst: write
      Src: /src/casync/src/util.c:138,1
    - Dst: MIN
      Src: /src/casync/src/util.c:138,1
    - Dst: assert
      Src: /src/casync/src/util.c:142,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 2
    argNames:
    - fd
    - l
    argTypes:
    - int
    - size_t
    assertStmts:
    - condition: ((size_t) w <= l)
      pos:
        line_end: 141
        line_start: 141
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 147
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 147
    functionName: write_zeroes
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - lseek
    - fallocate
    - assert
    - ftruncate
    - write
    - alloca0
    - MIN
    linkageType: ''
    returnType: int
    signature: int write_zeroes(int fd, size_t l)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/casync/src/util.c:167,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - data
    - length
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 168
    functionName: memeqzero
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool memeqzero(const void *data, size_t length)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/casync/src/util.c:179,1
    - Dst: memeqzero
      Src: /src/casync/src/util.c:181,1
    - Dst: loop_write
      Src: /src/casync/src/util.c:187,1
    - Dst: write_zeroes
      Src: /src/casync/src/util.c:191,1
    - Dst: loop_write
      Src: /src/casync/src/util.c:197,1
    - Dst: loop_write
      Src: /src/casync/src/util.c:216,1
    - Dst: write_zeroes
      Src: /src/casync/src/util.c:220,1
    - Dst: loop_write
      Src: /src/casync/src/util.c:229,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 49
    argCount: 4
    argNames:
    - fd
    - p
    - l
    - ret_punched
    argTypes:
    - int
    - void*
    - size_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 238
    functionName: loop_write_with_holes
    functionSourceFile: /src/casync/src/util.c
    functionUses: 2
    functionsReached:
    - memeqzero
    - MIN
    - loop_write
    - write_zeroes
    linkageType: ''
    returnType: int
    signature: int loop_write_with_holes(int fd, const void *p, size_t l, uint64_t
      *ret_punched)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/casync/src/util.c:253,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - fd
    - p
    - l
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 265
    functionName: loop_read
    functionSourceFile: /src/casync/src/util.c
    functionUses: 3
    functionsReached:
    - read
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t loop_read(int fd, void *p, size_t l)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/casync/src/util.c:275,1
    - Dst: MIN
      Src: /src/casync/src/util.c:279,1
    - Dst: alloca
      Src: /src/casync/src/util.c:280,1
    - Dst: read
      Src: /src/casync/src/util.c:285,1
    - Dst: MIN
      Src: /src/casync/src/util.c:285,1
    - Dst: assert
      Src: /src/casync/src/util.c:291,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - fd
    - bytes
    argTypes:
    - int
    - uint64_t
    assertStmts:
    - condition: ((uint64_t) l <= bytes)
      pos:
        line_end: 290
        line_start: 290
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 297
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 297
    functionName: skip_bytes
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - lseek
    - alloca
    - read
    - assert
    - MIN
    linkageType: ''
    returnType: int
    signature: int skip_bytes(int fd, uint64_t bytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/casync/src/util.c:303,1
    - Dst: strlen
      Src: /src/casync/src/util.c:304,1
    - Dst: strcmp
      Src: /src/casync/src/util.c:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - p
    - suffix
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 312
    functionName: endswith
    functionSourceFile: /src/casync/src/util.c
    functionUses: 1
    functionsReached:
    - strcmp
    - strlen
    linkageType: ''
    returnType: char
    signature: char *endswith(const char *p, const char *suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/casync/src/util.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - buffer
    - count
    - flags
    argTypes:
    - void*
    - size_t
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 354
    functionName: getrandom
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: int
    signature: int getrandom(void *buffer, size_t count, unsigned flags)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getrandom
      Src: /src/casync/src/util.c:371,1
    - Dst: open
      Src: /src/casync/src/util.c:388,1
    - Dst: loop_read
      Src: /src/casync/src/util.c:392,1
    - Dst: close
      Src: /src/casync/src/util.c:393,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 401
    functionName: dev_urandom
    functionSourceFile: /src/casync/src/util.c
    functionUses: 3
    functionsReached:
    - close
    - loop_read
    - getrandom
    - open
    linkageType: ''
    returnType: int
    signature: int dev_urandom(void *p, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 405
    functionName: octchar
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char octchar(int x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 411
    functionName: hexchar
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char hexchar(int x)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 425
    functionName: unhexchar
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int unhexchar(char c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hexchar
      Src: /src/casync/src/util.c:436,1
    - Dst: hexchar
      Src: /src/casync/src/util.c:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - p
    - l
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 442
    functionName: hexmem
    functionSourceFile: /src/casync/src/util.c
    functionUses: 1
    functionsReached:
    - hexchar
    linkageType: ''
    returnType: char
    signature: char *hexmem(const void *p, size_t l)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isempty
      Src: /src/casync/src/util.c:447,1
    - Dst: dot_or_dot_dot
      Src: /src/casync/src/util.c:450,1
    - Dst: strchrnul
      Src: /src/casync/src/util.c:453,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 461
    functionName: filename_is_valid
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - isempty
    - dot_or_dot_dot
    - strchrnul
    linkageType: ''
    returnType: bool
    signature: bool filename_is_valid(const char *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:469,1
    - Dst: assert
      Src: /src/casync/src/util.c:470,1
    - Dst: strrchr
      Src: /src/casync/src/util.c:480,1
    - Dst: filename_is_valid
      Src: /src/casync/src/util.c:482,1
    - Dst: strlen
      Src: /src/casync/src/util.c:485,1
    - Dst: stpcpy
      Src: /src/casync/src/util.c:489,1
    - Dst: stpcpy
      Src: /src/casync/src/util.c:489,1
    - Dst: mempcpy
      Src: /src/casync/src/util.c:489,1
    - Dst: random_u64
      Src: /src/casync/src/util.c:491,1
    - Dst: hexchar
      Src: /src/casync/src/util.c:493,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - p
    - ret
    argTypes:
    - char*
    - char**
    assertStmts:
    - condition: (p)
      pos:
        line_end: 468
        line_start: 468
        source_file: /src/casync/src/util.c
    - condition: (ret)
      pos:
        line_end: 469
        line_start: 469
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 501
      start: 463
    functionDepth: 2
    functionLinenumber: 463
    functionLinenumberEnd: 501
    functionName: tempfn_random
    functionSourceFile: /src/casync/src/util.c
    functionUses: 4
    functionsReached:
    - stpcpy
    - strrchr
    - filename_is_valid
    - strlen
    - random_u64
    - hexchar
    - mempcpy
    - assert
    linkageType: ''
    returnType: int
    signature: int tempfn_random(const char *p, char **ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:507,1
    - Dst: fprintf
      Src: /src/casync/src/util.c:515,1
    - Dst: fputs
      Src: /src/casync/src/util.c:520,1
    - Dst: fprintf
      Src: /src/casync/src/util.c:522,1
    - Dst: fputc
      Src: /src/casync/src/util.c:525,1
    - Dst: fputc
      Src: /src/casync/src/util.c:528,1
    - Dst: fputc
      Src: /src/casync/src/util.c:533,1
    - Dst: fputc
      Src: /src/casync/src/util.c:535,1
    - Dst: isprint
      Src: /src/casync/src/util.c:535,1
    - Dst: fputc
      Src: /src/casync/src/util.c:538,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - f
    - p
    - s
    argTypes:
    - FILE*
    - void*
    - size_t
    assertStmts:
    - condition: (s == 0 || b)
      pos:
        line_end: 506
        line_start: 506
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 547
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 547
    functionName: hexdump
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - isprint
    - fprintf
    - fputc
    - fputs
    - assert
    linkageType: ''
    returnType: void
    signature: void hexdump(FILE *f, const void *p, size_t s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:552,1
    - Dst: strdup
      Src: /src/casync/src/util.c:554,1
    - Dst: dirname
      Src: /src/casync/src/util.c:558,1
    - Dst: assert
      Src: /src/casync/src/util.c:559,1
    - Dst: strdup
      Src: /src/casync/src/util.c:564,1
    - Dst: free
      Src: /src/casync/src/util.c:565,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts:
    - condition: (path)
      pos:
        line_end: 551
        line_start: 551
        source_file: /src/casync/src/util.c
    - condition: (dir)
      pos:
        line_end: 558
        line_start: 558
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 568
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 568
    functionName: dirname_malloc
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - assert
    - free
    - dirname
    - strdup
    linkageType: ''
    returnType: char
    signature: char * dirname_malloc(const char *path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/casync/src/util.c:575,1
    - Dst: strlen
      Src: /src/casync/src/util.c:578,1
    - Dst: va_arg
      Src: /src/casync/src/util.c:584,1
    - Dst: strlen
      Src: /src/casync/src/util.c:588,1
    - Dst: va_end
      Src: /src/casync/src/util.c:590,1
    - Dst: va_end
      Src: /src/casync/src/util.c:599,1
    - Dst: stpcpy
      Src: /src/casync/src/util.c:606,1
    - Dst: va_start
      Src: /src/casync/src/util.c:608,1
    - Dst: va_arg
      Src: /src/casync/src/util.c:613,1
    - Dst: stpcpy
      Src: /src/casync/src/util.c:617,1
    - Dst: va_end
      Src: /src/casync/src/util.c:620,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 1
    argNames:
    - x
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 570
    functionDepth: 0
    functionLinenumber: 570
    functionLinenumberEnd: 625
    functionName: strjoin_real
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - stpcpy
    - strlen
    - va_arg
    linkageType: ''
    returnType: char
    signature: char *strjoin_real(const char *x, ...)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: S_ISDIR
      Src: /src/casync/src/util.c:676,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 2
    argNames:
    - m
    - ret
    argTypes:
    - mode_t
    - char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 681
    functionName: ls_format_mode
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - S_ISDIR
    linkageType: ''
    returnType: char
    signature: char * ls_format_mode(mode_t m, char ret[LS_FORMAT_MODE_MAX])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:706,1
    - Dst: ELEMENTSOF
      Src: /src/casync/src/util.c:706,1
    - Dst: ELEMENTSOF
      Src: /src/casync/src/util.c:708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - flags
    - ret
    argTypes:
    - unsigned
    - char[]
    assertStmts:
    - condition: (ELEMENTSOF(table) == LS_FORMAT_CHATTR_MAX-1)
      pos:
        line_end: 705
        line_start: 705
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 714
      start: 683
    functionDepth: 1
    functionLinenumber: 683
    functionLinenumberEnd: 714
    functionName: ls_format_chattr
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - ELEMENTSOF
    - assert
    linkageType: ''
    returnType: char
    signature: char *ls_format_chattr(unsigned flags, char ret[LS_FORMAT_CHATTR_MAX])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:732,1
    - Dst: ELEMENTSOF
      Src: /src/casync/src/util.c:732,1
    - Dst: ELEMENTSOF
      Src: /src/casync/src/util.c:734,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - flags
    - ret
    argTypes:
    - uint32_t
    - char[]
    assertStmts:
    - condition: (ELEMENTSOF(table) == LS_FORMAT_FAT_ATTRS_MAX-1)
      pos:
        line_end: 731
        line_start: 731
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 740
      start: 716
    functionDepth: 1
    functionLinenumber: 716
    functionLinenumberEnd: 740
    functionName: ls_format_fat_attrs
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - ELEMENTSOF
    - assert
    linkageType: ''
    returnType: char
    signature: char *ls_format_fat_attrs(uint32_t flags, char ret[LS_FORMAT_FAT_ATTRS_MAX])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:746,1
    - Dst: assert
      Src: /src/casync/src/util.c:747,1
    - Dst: strtol
      Src: /src/casync/src/util.c:750,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret_i
    argTypes:
    - char*
    - int*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 745
        line_start: 745
        source_file: /src/casync/src/util.c
    - condition: (ret_i)
      pos:
        line_end: 746
        line_start: 746
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 760
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 760
    functionName: safe_atoi
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - assert
    - strtol
    linkageType: ''
    returnType: int
    signature: int safe_atoi(const char *s, int *ret_i)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:766,1
    - Dst: strspn
      Src: /src/casync/src/util.c:776,1
    - Dst: strtoul
      Src: /src/casync/src/util.c:779,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - s
    - ret_u
    argTypes:
    - char*
    - unsigned*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 765
        line_start: 765
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 793
      start: 762
    functionDepth: 0
    functionLinenumber: 762
    functionLinenumberEnd: 793
    functionName: safe_atou
    functionSourceFile: /src/casync/src/util.c
    functionUses: 1
    functionsReached:
    - assert
    - strtoul
    - strspn
    linkageType: ''
    returnType: int
    signature: int safe_atou(const char *s, unsigned *ret_u)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:799,1
    - Dst: strspn
      Src: /src/casync/src/util.c:801,1
    - Dst: strtoull
      Src: /src/casync/src/util.c:804,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - s
    - ret_llu
    argTypes:
    - char*
    - long long unsigned*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 798
        line_start: 798
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 816
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 816
    functionName: safe_atollu
    functionSourceFile: /src/casync/src/util.c
    functionUses: 1
    functionsReached:
    - assert
    - strtoull
    - strspn
    linkageType: ''
    returnType: int
    signature: int safe_atollu(const char *s, long long unsigned *ret_llu)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:822,1
    - Dst: strspn
      Src: /src/casync/src/util.c:824,1
    - Dst: strtoull
      Src: /src/casync/src/util.c:827,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - s
    - ret_llu
    argTypes:
    - char*
    - long long unsigned*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 821
        line_start: 821
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 839
      start: 818
    functionDepth: 0
    functionLinenumber: 818
    functionLinenumberEnd: 839
    functionName: safe_atollx
    functionSourceFile: /src/casync/src/util.c
    functionUses: 1
    functionsReached:
    - assert
    - strtoull
    - strspn
    linkageType: ''
    returnType: int
    signature: int safe_atollx(const char *s, long long unsigned *ret_llu)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:845,1
    - Dst: assert
      Src: /src/casync/src/util.c:846,1
    - Dst: readlinkat
      Src: /src/casync/src/util.c:856,1
    - Dst: free
      Src: /src/casync/src/util.c:859,1
    - Dst: free
      Src: /src/casync/src/util.c:869,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - fd
    - p
    - ret
    argTypes:
    - int
    - char*
    - char**
    assertStmts:
    - condition: (p)
      pos:
        line_end: 844
        line_start: 844
        source_file: /src/casync/src/util.c
    - condition: (ret)
      pos:
        line_end: 845
        line_start: 845
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 872
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 872
    functionName: readlinkat_malloc
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - assert
    - readlinkat
    - free
    linkageType: ''
    returnType: int
    signature: int readlinkat_malloc(int fd, const char *p, char **ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: readlinkat_malloc
      Src: /src/casync/src/util.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - ret
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 876
    functionName: readlink_malloc
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - readlinkat_malloc
    linkageType: ''
    returnType: int
    signature: int readlink_malloc(const char *p, char **ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/casync/src/util.c:885,1
    - Dst: mfree
      Src: /src/casync/src/util.c:887,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 888
    functionName: strv_free
    functionSourceFile: /src/casync/src/util.c
    functionUses: 1
    functionsReached:
    - mfree
    - free
    linkageType: ''
    returnType: char
    signature: char **strv_free(char **l)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - l
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 890
    functionDepth: 0
    functionLinenumber: 890
    functionLinenumberEnd: 900
    functionName: strv_length
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t strv_length(char **l)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:906,1
    - Dst: strv_length
      Src: /src/casync/src/util.c:911,1
    - Dst: realloc_multiply
      Src: /src/casync/src/util.c:918,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - l
    - value
    argTypes:
    - char***
    - char*
    assertStmts:
    - condition: (l)
      pos:
        line_end: 905
        line_start: 905
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 927
      start: 902
    functionDepth: 2
    functionLinenumber: 902
    functionLinenumberEnd: 927
    functionName: strv_push
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - assert
    - strv_length
    - realloc_multiply
    linkageType: ''
    returnType: int
    signature: int strv_push(char ***l, char *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:932,1
    - Dst: strv_push
      Src: /src/casync/src/util.c:934,1
    - Dst: free
      Src: /src/casync/src/util.c:936,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - l
    - value
    argTypes:
    - char***
    - char*
    assertStmts:
    - condition: (l)
      pos:
        line_end: 931
        line_start: 931
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 939
      start: 929
    functionDepth: 3
    functionLinenumber: 929
    functionLinenumberEnd: 939
    functionName: strv_consume
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - strv_push
    - assert
    - free
    linkageType: ''
    returnType: int
    signature: int strv_consume(char ***l, char *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:944,1
    - Dst: strdup
      Src: /src/casync/src/util.c:949,1
    - Dst: strv_consume
      Src: /src/casync/src/util.c:953,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - l
    - value
    argTypes:
    - char***
    - char*
    assertStmts:
    - condition: (l)
      pos:
        line_end: 943
        line_start: 943
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 954
      start: 941
    functionDepth: 4
    functionLinenumber: 941
    functionLinenumberEnd: 954
    functionName: strv_extend
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - assert
    - strv_consume
    - strdup
    linkageType: ''
    returnType: int
    signature: int strv_extend(char ***l, const char *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: openat
      Src: /src/casync/src/util.c:960,1
    - Dst: fdopendir
      Src: /src/casync/src/util.c:964,1
    - Dst: safe_close
      Src: /src/casync/src/util.c:966,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - fd
    - name
    - flags
    - ret
    argTypes:
    - int
    - char*
    - int
    - DIR**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 956
    functionDepth: 3
    functionLinenumber: 956
    functionLinenumberEnd: 972
    functionName: xopendirat
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - fdopendir
    - safe_close
    - openat
    linkageType: ''
    returnType: int
    signature: int xopendirat(int fd, const char *name, int flags, DIR **ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:987,1
    - Dst: clock_gettime
      Src: /src/casync/src/util.c:987,1
    - Dst: timespec_to_nsec
      Src: /src/casync/src/util.c:988,1
    - Dst: fputc
      Src: /src/casync/src/util.c:995,1
    - Dst: ELEMENTSOF
      Src: /src/casync/src/util.c:995,1
    - Dst: fputc
      Src: /src/casync/src/util.c:996,1
    - Dst: fflush
      Src: /src/casync/src/util.c:997,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (clock_gettime(CLOCK_MONOTONIC, &now) >= 0)
      pos:
        line_end: 986
        line_start: 986
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1000
      start: 974
    functionDepth: 1
    functionLinenumber: 974
    functionLinenumberEnd: 1000
    functionName: progress
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - fflush
    - fputc
    - timespec_to_nsec
    - ELEMENTSOF
    - clock_gettime
    - assert
    linkageType: ''
    returnType: void
    signature: void progress(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1007,1
    - Dst: strlen
      Src: /src/casync/src/util.c:1009,1
    - Dst: va_start
      Src: /src/casync/src/util.c:1011,1
    - Dst: va_arg
      Src: /src/casync/src/util.c:1016,1
    - Dst: strlen
      Src: /src/casync/src/util.c:1020,1
    - Dst: va_end
      Src: /src/casync/src/util.c:1022,1
    - Dst: va_end
      Src: /src/casync/src/util.c:1028,1
    - Dst: realloc
      Src: /src/casync/src/util.c:1030,1
    - Dst: va_start
      Src: /src/casync/src/util.c:1036,1
    - Dst: va_arg
      Src: /src/casync/src/util.c:1040,1
    - Dst: stpcpy
      Src: /src/casync/src/util.c:1044,1
    - Dst: va_end
      Src: /src/casync/src/util.c:1046,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - x
    argTypes:
    - char**
    assertStmts:
    - condition: (x)
      pos:
        line_end: 1006
        line_start: 1006
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1052
      start: 1002
    functionDepth: 0
    functionLinenumber: 1002
    functionLinenumberEnd: 1052
    functionName: strextend
    functionSourceFile: /src/casync/src/util.c
    functionUses: 1
    functionsReached:
    - va_end
    - realloc
    - va_start
    - stpcpy
    - strlen
    - assert
    - va_arg
    linkageType: ''
    returnType: char
    signature: char *strextend(char **x, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UINT32_C
      Src: /src/casync/src/util.c:1057,1
    - Dst: UINT32_C
      Src: /src/casync/src/util.c:1061,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - uid
    argTypes:
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1054
    functionDepth: 0
    functionLinenumber: 1054
    functionLinenumberEnd: 1065
    functionName: uid_is_valid
    functionSourceFile: /src/casync/src/util.c
    functionUses: 6
    functionsReached:
    - UINT32_C
    linkageType: ''
    returnType: bool
    signature: bool uid_is_valid(uid_t uid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1071,1
    - Dst: assert
      Src: /src/casync/src/util.c:1073,1
    - Dst: safe_atou32
      Src: /src/casync/src/util.c:1074,1
    - Dst: uid_is_valid
      Src: /src/casync/src/util.c:1078,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - char*
    - uid_t*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1070
        line_start: 1070
        source_file: /src/casync/src/util.c
    - condition: (sizeof(uid_t) == sizeof(uint32_t))
      pos:
        line_end: 1072
        line_start: 1072
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1088
      start: 1067
    functionDepth: 2
    functionLinenumber: 1067
    functionLinenumberEnd: 1088
    functionName: parse_uid
    functionSourceFile: /src/casync/src/util.c
    functionUses: 2
    functionsReached:
    - assert
    - safe_atou32
    - uid_is_valid
    linkageType: ''
    returnType: int
    signature: int parse_uid(const char *s, uid_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1093,1
    - Dst: memset
      Src: /src/casync/src/util.c:1099,1
    - Dst: waitid
      Src: /src/casync/src/util.c:1101,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - pid
    - status
    argTypes:
    - pid_t
    - siginfo_t*
    assertStmts:
    - condition: (pid >= 1)
      pos:
        line_end: 1092
        line_start: 1092
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1111
      start: 1090
    functionDepth: 0
    functionLinenumber: 1090
    functionLinenumberEnd: 1111
    functionName: wait_for_terminate
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - waitid
    - assert
    - memset
    linkageType: ''
    returnType: int
    signature: int wait_for_terminate(pid_t pid, siginfo_t *status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1116,1
    - Dst: STRV_FOREACH
      Src: /src/casync/src/util.c:1118,1
    - Dst: streq
      Src: /src/casync/src/util.c:1119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - l
    - name
    argTypes:
    - char**
    - char*
    assertStmts:
    - condition: (name)
      pos:
        line_end: 1115
        line_start: 1115
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1123
      start: 1113
    functionDepth: 1
    functionLinenumber: 1113
    functionLinenumberEnd: 1123
    functionName: strv_find
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - streq
    - assert
    - STRV_FOREACH
    linkageType: ''
    returnType: char
    signature: char *strv_find(char **l, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _likely_
      Src: /src/casync/src/util.c:1129,1
    - Dst: sysconf
      Src: /src/casync/src/util.c:1132,1
    - Dst: assert
      Src: /src/casync/src/util.c:1133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (v > 0)
      pos:
        line_end: 1132
        line_start: 1132
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1137
      start: 1125
    functionDepth: 1
    functionLinenumber: 1125
    functionLinenumberEnd: 1137
    functionName: page_size
    functionSourceFile: /src/casync/src/util.c
    functionUses: 2
    functionsReached:
    - assert
    - sysconf
    - _likely_
    linkageType: ''
    returnType: size_t
    signature: size_t page_size(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/casync/src/util.c:1143,1
    - Dst: strcaseeq
      Src: /src/casync/src/util.c:1143,1
    - Dst: strcaseeq
      Src: /src/casync/src/util.c:1143,1
    - Dst: strcaseeq
      Src: /src/casync/src/util.c:1143,1
    - Dst: strcaseeq
      Src: /src/casync/src/util.c:1143,1
    - Dst: strcaseeq
      Src: /src/casync/src/util.c:1143,1
    - Dst: streq
      Src: /src/casync/src/util.c:1145,1
    - Dst: strcaseeq
      Src: /src/casync/src/util.c:1145,1
    - Dst: strcaseeq
      Src: /src/casync/src/util.c:1145,1
    - Dst: strcaseeq
      Src: /src/casync/src/util.c:1145,1
    - Dst: strcaseeq
      Src: /src/casync/src/util.c:1145,1
    - Dst: strcaseeq
      Src: /src/casync/src/util.c:1145,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1139
    functionDepth: 1
    functionLinenumber: 1139
    functionLinenumberEnd: 1149
    functionName: parse_boolean
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - streq
    - strcaseeq
    linkageType: ''
    returnType: int
    signature: int parse_boolean(const char *v)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/casync/src/util.c:1154,1
    - Dst: parse_boolean
      Src: /src/casync/src/util.c:1158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1151
    functionDepth: 2
    functionLinenumber: 1151
    functionLinenumberEnd: 1159
    functionName: getenv_bool
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - getenv
    - parse_boolean
    linkageType: ''
    returnType: int
    signature: int getenv_bool(const char *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1165,1
    - Dst: assert
      Src: /src/casync/src/util.c:1166,1
    - Dst: MAX
      Src: /src/casync/src/util.c:1171,1
    - Dst: realloc
      Src: /src/casync/src/util.c:1178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - p
    - allocated
    - need
    - size
    argTypes:
    - void**
    - size_t*
    - size_t
    - size_t
    assertStmts:
    - condition: (p)
      pos:
        line_end: 1164
        line_start: 1164
        source_file: /src/casync/src/util.c
    - condition: (allocated)
      pos:
        line_end: 1165
        line_start: 1165
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1185
      start: 1161
    functionDepth: 1
    functionLinenumber: 1161
    functionLinenumberEnd: 1185
    functionName: greedy_realloc
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - assert
    - realloc
    - MAX
    linkageType: ''
    returnType: void
    signature: void * greedy_realloc(void **p, size_t *allocated, size_t need, size_t
      size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1191,1
    - Dst: assert
      Src: /src/casync/src/util.c:1192,1
    - Dst: greedy_realloc
      Src: /src/casync/src/util.c:1196,1
    - Dst: memzero
      Src: /src/casync/src/util.c:1201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - p
    - allocated
    - need
    - size
    argTypes:
    - void**
    - size_t*
    - size_t
    - size_t
    assertStmts:
    - condition: (p)
      pos:
        line_end: 1190
        line_start: 1190
        source_file: /src/casync/src/util.c
    - condition: (allocated)
      pos:
        line_end: 1191
        line_start: 1191
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1204
      start: 1187
    functionDepth: 2
    functionLinenumber: 1187
    functionLinenumberEnd: 1204
    functionName: greedy_realloc0
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - assert
    - memzero
    - greedy_realloc
    linkageType: ''
    returnType: void
    signature: void * greedy_realloc0(void **p, size_t *allocated, size_t need, size_t
      size)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/casync/src/util.c:1215,1
    - Dst: MIN
      Src: /src/casync/src/util.c:1221,1
    - Dst: alloca
      Src: /src/casync/src/util.c:1222,1
    - Dst: read
      Src: /src/casync/src/util.c:1227,1
    - Dst: MIN
      Src: /src/casync/src/util.c:1238,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - fd
    - n_bytes
    argTypes:
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1206
    functionDepth: 1
    functionLinenumber: 1206
    functionLinenumberEnd: 1240
    functionName: skip_bytes_fd
    functionSourceFile: /src/casync/src/util.c
    functionUses: 1
    functionsReached:
    - read
    - lseek
    - MIN
    - alloca
    linkageType: ''
    returnType: int
    signature: int skip_bytes_fd(int fd, uint64_t n_bytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/casync/src/util.c:1246,1
    - Dst: strchr
      Src: /src/casync/src/util.c:1247,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1253
      start: 1242
    functionDepth: 0
    functionLinenumber: 1242
    functionLinenumberEnd: 1253
    functionName: truncate_nl
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: char
    signature: char *truncate_nl(char *p)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: renameat2
      Src: /src/casync/src/util.c:1258,1
    - Dst: ERRNO_IS_UNSUPPORTED
      Src: /src/casync/src/util.c:1263,1
    - Dst: linkat
      Src: /src/casync/src/util.c:1267,1
    - Dst: unlinkat
      Src: /src/casync/src/util.c:1268,1
    - Dst: unlinkat
      Src: /src/casync/src/util.c:1272,1
    - Dst: ERRNO_IS_UNSUPPORTED
      Src: /src/casync/src/util.c:1274,1
    - Dst: faccessat
      Src: /src/casync/src/util.c:1279,1
    - Dst: renameat
      Src: /src/casync/src/util.c:1285,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - olddirfd
    - oldpath
    - newdirfd
    - newpath
    argTypes:
    - int
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1255
    functionDepth: 1
    functionLinenumber: 1255
    functionLinenumberEnd: 1289
    functionName: rename_noreplace
    functionSourceFile: /src/casync/src/util.c
    functionUses: 1
    functionsReached:
    - renameat2
    - unlinkat
    - ERRNO_IS_UNSUPPORTED
    - faccessat
    - renameat
    - linkat
    linkageType: ''
    returnType: int
    signature: int rename_noreplace(int olddirfd, const char *oldpath, int newdirfd,
      const char *newpath)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1292,1
    - Dst: assert
      Src: /src/casync/src/util.c:1293,1
    - Dst: strspn
      Src: /src/casync/src/util.c:1311,1
    - Dst: strspn
      Src: /src/casync/src/util.c:1312,1
    - Dst: strcspn
      Src: /src/casync/src/util.c:1320,1
    - Dst: strcspn
      Src: /src/casync/src/util.c:1321,1
    - Dst: memcmp
      Src: /src/casync/src/util.c:1326,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - path
    - prefix
    argTypes:
    - char*
    - char*
    assertStmts:
    - condition: (path)
      pos:
        line_end: 1291
        line_start: 1291
        source_file: /src/casync/src/util.c
    - condition: (prefix)
      pos:
        line_end: 1292
        line_start: 1292
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1332
      start: 1291
    functionDepth: 0
    functionLinenumber: 1291
    functionLinenumberEnd: 1332
    functionName: path_startswith
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - assert
    - memcmp
    - strcspn
    - strspn
    linkageType: ''
    returnType: char
    signature: char * path_startswith(const char *path, const char *prefix)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1338,1
    - Dst: FOREACH_STRING
      Src: /src/casync/src/util.c:1342,1
    - Dst: secure_getenv
      Src: /src/casync/src/util.c:1345,1
    - Dst: path_is_absolute
      Src: /src/casync/src/util.c:1348,1
    - Dst: path_is_safe
      Src: /src/casync/src/util.c:1352,1
    - Dst: is_dir
      Src: /src/casync/src/util.c:1357,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 1
    argNames:
    - ret_path
    argTypes:
    - char**
    assertStmts:
    - condition: (ret_path)
      pos:
        line_end: 1337
        line_start: 1337
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1379
      start: 1334
    functionDepth: 1
    functionLinenumber: 1334
    functionLinenumberEnd: 1379
    functionName: getenv_tmp_dir
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - path_is_safe
    - is_dir
    - secure_getenv
    - FOREACH_STRING
    - assert
    - path_is_absolute
    linkageType: ''
    returnType: int
    signature: int getenv_tmp_dir(const char **ret_path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1385,1
    - Dst: assert
      Src: /src/casync/src/util.c:1386,1
    - Dst: getenv_tmp_dir
      Src: /src/casync/src/util.c:1388,1
    - Dst: is_dir
      Src: /src/casync/src/util.c:1394,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - def
    - ret
    argTypes:
    - char*
    - char**
    assertStmts:
    - condition: (def)
      pos:
        line_end: 1384
        line_start: 1384
        source_file: /src/casync/src/util.c
    - condition: (ret)
      pos:
        line_end: 1385
        line_start: 1385
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1402
      start: 1381
    functionDepth: 2
    functionLinenumber: 1381
    functionLinenumberEnd: 1402
    functionName: tmp_dir_internal
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - assert
    - getenv_tmp_dir
    - is_dir
    linkageType: ''
    returnType: int
    signature: int tmp_dir_internal(const char *def, const char **ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tmp_dir_internal
      Src: /src/casync/src/util.c:1411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ret
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1404
    functionDepth: 3
    functionLinenumber: 1404
    functionLinenumberEnd: 1412
    functionName: var_tmp_dir
    functionSourceFile: /src/casync/src/util.c
    functionUses: 5
    functionsReached:
    - tmp_dir_internal
    linkageType: ''
    returnType: int
    signature: int var_tmp_dir(const char **ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tmp_dir_internal
      Src: /src/casync/src/util.c:1419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ret
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1414
    functionDepth: 3
    functionLinenumber: 1414
    functionLinenumberEnd: 1420
    functionName: tmp_dir
    functionSourceFile: /src/casync/src/util.c
    functionUses: 7
    functionsReached:
    - tmp_dir_internal
    linkageType: ''
    returnType: int
    signature: int tmp_dir(const char **ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isempty
      Src: /src/casync/src/util.c:1424,1
    - Dst: dot_or_dot_dot
      Src: /src/casync/src/util.c:1427,1
    - Dst: startswith
      Src: /src/casync/src/util.c:1430,1
    - Dst: endswith
      Src: /src/casync/src/util.c:1430,1
    - Dst: strstr
      Src: /src/casync/src/util.c:1430,1
    - Dst: strlen
      Src: /src/casync/src/util.c:1433,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1422
    functionDepth: 1
    functionLinenumber: 1422
    functionLinenumberEnd: 1437
    functionName: path_is_safe
    functionSourceFile: /src/casync/src/util.c
    functionUses: 1
    functionsReached:
    - endswith
    - strstr
    - startswith
    - strlen
    - isempty
    - dot_or_dot_dot
    linkageType: ''
    returnType: bool
    signature: bool path_is_safe(const char *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1443,1
    - Dst: stat
      Src: /src/casync/src/util.c:1446,1
    - Dst: lstat
      Src: /src/casync/src/util.c:1448,1
    - Dst: S_ISDIR
      Src: /src/casync/src/util.c:1452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - path
    - follow
    argTypes:
    - char*
    - bool
    assertStmts:
    - condition: (path)
      pos:
        line_end: 1442
        line_start: 1442
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1453
      start: 1439
    functionDepth: 0
    functionLinenumber: 1439
    functionLinenumberEnd: 1453
    functionName: is_dir
    functionSourceFile: /src/casync/src/util.c
    functionUses: 2
    functionsReached:
    - assert
    - S_ISDIR
    - lstat
    - stat
    linkageType: ''
    returnType: int
    signature: int is_dir(const char* path, bool follow)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1458,1
    - Dst: streq_ptr
      Src: /src/casync/src/util.c:1462,1
    - Dst: strdup
      Src: /src/casync/src/util.c:1466,1
    - Dst: free
      Src: /src/casync/src/util.c:1472,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - p
    - s
    argTypes:
    - char**
    - char*
    assertStmts:
    - condition: (p)
      pos:
        line_end: 1457
        line_start: 1457
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1476
      start: 1455
    functionDepth: 2
    functionLinenumber: 1455
    functionLinenumberEnd: 1476
    functionName: free_and_strdup
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - assert
    - free
    - streq_ptr
    - strdup
    linkageType: ''
    returnType: int
    signature: int free_and_strdup(char **p, const char *s)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/util.c:1484,1
    - Dst: GREEDY_REALLOC
      Src: /src/casync/src/util.c:1500,1
    - Dst: flockfile
      Src: /src/casync/src/util.c:1506,1
    - Dst: fgetc_unlocked
      Src: /src/casync/src/util.c:1515,1
    - Dst: ferror_unlocked
      Src: /src/casync/src/util.c:1518,1
    - Dst: IN_SET
      Src: /src/casync/src/util.c:1526,1
    - Dst: GREEDY_REALLOC
      Src: /src/casync/src/util.c:1530,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 3
    argNames:
    - f
    - limit
    - ret
    argTypes:
    - FILE*
    - size_t
    - char**
    assertStmts:
    - condition: (f)
      pos:
        line_end: 1483
        line_start: 1483
        source_file: /src/casync/src/util.c
    constantsTouched: []
    func_position:
      end: 1548
      start: 1480
    functionDepth: 1
    functionLinenumber: 1480
    functionLinenumberEnd: 1548
    functionName: read_line
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - ferror_unlocked
    - flockfile
    - IN_SET
    - GREEDY_REALLOC
    - assert
    - fgetc_unlocked
    linkageType: ''
    returnType: int
    signature: int read_line(FILE *f, size_t limit, char **ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/casync/src/util.c:1562,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - s
    - bad
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1550
    functionDepth: 0
    functionLinenumber: 1550
    functionLinenumberEnd: 1568
    functionName: delete_trailing_chars
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: char
    signature: char *delete_trailing_chars(char *s, const char *bad)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delete_trailing_chars
      Src: /src/casync/src/util.c:1574,1
    - Dst: strspn
      Src: /src/casync/src/util.c:1575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1570
    functionDepth: 1
    functionLinenumber: 1570
    functionLinenumberEnd: 1576
    functionName: strstrip
    functionSourceFile: /src/casync/src/util.c
    functionUses: 0
    functionsReached:
    - delete_trailing_chars
    - strspn
    linkageType: ''
    returnType: char
    signature: char *strstrip(char *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - c
    argTypes:
    - CaCompressionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 19
    functionName: ca_compression_type_to_string
    functionSourceFile: /src/casync/src/cacompression.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * ca_compression_type_to_string(CaCompressionType c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isempty
      Src: /src/casync/src/cacompression.c:24,1
    - Dst: streq
      Src: /src/casync/src/cacompression.c:27,1
    - Dst: streq
      Src: /src/casync/src/cacompression.c:31,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 37
    functionName: ca_compression_type_from_string
    functionSourceFile: /src/casync/src/cacompression.c
    functionUses: 0
    functionsReached:
    - streq
    - isempty
    linkageType: ''
    returnType: CaCompressionType
    signature: CaCompressionType ca_compression_type_from_string(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 76
    functionName: PTR_COMPATIBLE_WITH_HASHMAP_BASE
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR_COMPATIBLE_WITH_HASHMAP_BASE(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: PTR_COMPATIBLE_WITH_PLAIN_HASHMAP
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR_COMPATIBLE_WITH_PLAIN_HASHMAP(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: HASHMAP_BASE
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASHMAP_BASE(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: PLAIN_HASHMAP
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PLAIN_HASHMAP(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ops
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    functionName: hashmap_new
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hashmap_new(ops)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ops
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: ordered_hashmap_new
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ordered_hashmap_new(ops)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_free
      Src: /src/casync/src/hashmap.h:108,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: hashmap_free
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_free
    linkageType: ''
    returnType: Hashmap
    signature: Hashmap *hashmap_free(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_free
      Src: /src/casync/src/hashmap.h:111,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 112
    functionName: ordered_hashmap_free
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_free
    linkageType: ''
    returnType: OrderedHashmap
    signature: OrderedHashmap *ordered_hashmap_free(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_free_free
      Src: /src/casync/src/hashmap.h:116,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: hashmap_free_free
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_free_free
    linkageType: ''
    returnType: Hashmap
    signature: Hashmap *hashmap_free_free(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_free_free
      Src: /src/casync/src/hashmap.h:119,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 120
    functionName: ordered_hashmap_free_free
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_free_free
    linkageType: ''
    returnType: OrderedHashmap
    signature: OrderedHashmap *ordered_hashmap_free_free(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_free_free_free
      Src: /src/casync/src/hashmap.h:124,1
    - Dst: PLAIN_HASHMAP
      Src: /src/casync/src/hashmap.h:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: ordered_hashmap_free_free_free
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - PLAIN_HASHMAP
    - hashmap_free_free_free
    linkageType: ''
    returnType: OrderedHashmap
    signature: OrderedHashmap *ordered_hashmap_free_free_free(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_copy
      Src: /src/casync/src/hashmap.h:129,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 130
    functionName: hashmap_copy
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_copy
    linkageType: ''
    returnType: Hashmap
    signature: Hashmap *hashmap_copy(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_copy
      Src: /src/casync/src/hashmap.h:132,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: ordered_hashmap_copy
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_copy
    linkageType: ''
    returnType: OrderedHashmap
    signature: OrderedHashmap *ordered_hashmap_copy(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - h
    - ','
    - ops
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 138
    functionName: hashmap_ensure_allocated
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hashmap_ensure_allocated(h, ops)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - h
    - ','
    - ops
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 139
    functionName: ordered_hashmap_ensure_allocated
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ordered_hashmap_ensure_allocated(h, ops)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_put
      Src: /src/casync/src/hashmap.h:142,1
    - Dst: PLAIN_HASHMAP
      Src: /src/casync/src/hashmap.h:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - h
    - key
    - value
    argTypes:
    - OrderedHashmap*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: ordered_hashmap_put
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - PLAIN_HASHMAP
    - hashmap_put
    linkageType: ''
    returnType: int
    signature: int ordered_hashmap_put(OrderedHashmap *h, const void *key, void *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_update
      Src: /src/casync/src/hashmap.h:147,1
    - Dst: PLAIN_HASHMAP
      Src: /src/casync/src/hashmap.h:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - h
    - key
    - value
    argTypes:
    - OrderedHashmap*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 148
    functionName: ordered_hashmap_update
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - PLAIN_HASHMAP
    - hashmap_update
    linkageType: ''
    returnType: int
    signature: int ordered_hashmap_update(OrderedHashmap *h, const void *key, void
      *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_replace
      Src: /src/casync/src/hashmap.h:152,1
    - Dst: PLAIN_HASHMAP
      Src: /src/casync/src/hashmap.h:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - h
    - key
    - value
    argTypes:
    - OrderedHashmap*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: ordered_hashmap_replace
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - hashmap_replace
    - PLAIN_HASHMAP
    linkageType: ''
    returnType: int
    signature: int ordered_hashmap_replace(OrderedHashmap *h, const void *key, void
      *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_get
      Src: /src/casync/src/hashmap.h:157,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - key
    argTypes:
    - Hashmap*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 158
    functionName: hashmap_get
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_get
    linkageType: ''
    returnType: void
    signature: void *hashmap_get(Hashmap *h, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_get
      Src: /src/casync/src/hashmap.h:160,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - key
    argTypes:
    - OrderedHashmap*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: ordered_hashmap_get
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_get
    linkageType: ''
    returnType: void
    signature: void *ordered_hashmap_get(OrderedHashmap *h, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_get2
      Src: /src/casync/src/hashmap.h:165,1
    - Dst: PLAIN_HASHMAP
      Src: /src/casync/src/hashmap.h:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - h
    - key
    - rkey
    argTypes:
    - OrderedHashmap*
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 166
    functionName: ordered_hashmap_get2
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - PLAIN_HASHMAP
    - hashmap_get2
    linkageType: ''
    returnType: void
    signature: void *ordered_hashmap_get2(OrderedHashmap *h, const void *key, void
      **rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_contains
      Src: /src/casync/src/hashmap.h:170,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - key
    argTypes:
    - Hashmap*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 171
    functionName: hashmap_contains
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_contains
    linkageType: ''
    returnType: bool
    signature: bool hashmap_contains(Hashmap *h, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_contains
      Src: /src/casync/src/hashmap.h:173,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - key
    argTypes:
    - OrderedHashmap*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: ordered_hashmap_contains
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_contains
    linkageType: ''
    returnType: bool
    signature: bool ordered_hashmap_contains(OrderedHashmap *h, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_remove
      Src: /src/casync/src/hashmap.h:178,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - key
    argTypes:
    - Hashmap*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 179
    functionName: hashmap_remove
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - internal_hashmap_remove
    - HASHMAP_BASE
    linkageType: ''
    returnType: void
    signature: void *hashmap_remove(Hashmap *h, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_remove
      Src: /src/casync/src/hashmap.h:181,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - key
    argTypes:
    - OrderedHashmap*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 182
    functionName: ordered_hashmap_remove
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - internal_hashmap_remove
    - HASHMAP_BASE
    linkageType: ''
    returnType: void
    signature: void *ordered_hashmap_remove(OrderedHashmap *h, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_remove2
      Src: /src/casync/src/hashmap.h:186,1
    - Dst: PLAIN_HASHMAP
      Src: /src/casync/src/hashmap.h:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - h
    - key
    - rkey
    argTypes:
    - OrderedHashmap*
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 187
    functionName: ordered_hashmap_remove2
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - PLAIN_HASHMAP
    - hashmap_remove2
    linkageType: ''
    returnType: void
    signature: void *ordered_hashmap_remove2(OrderedHashmap *h, const void *key, void
      **rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_remove_value
      Src: /src/casync/src/hashmap.h:191,1
    - Dst: PLAIN_HASHMAP
      Src: /src/casync/src/hashmap.h:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - h
    - key
    - value
    argTypes:
    - OrderedHashmap*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 192
    functionName: ordered_hashmap_remove_value
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - hashmap_remove_value
    - PLAIN_HASHMAP
    linkageType: ''
    returnType: void
    signature: void *ordered_hashmap_remove_value(OrderedHashmap *h, const void *key,
      void *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_remove_and_put
      Src: /src/casync/src/hashmap.h:196,1
    - Dst: PLAIN_HASHMAP
      Src: /src/casync/src/hashmap.h:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - h
    - old_key
    - new_key
    - value
    argTypes:
    - OrderedHashmap*
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 197
    functionName: ordered_hashmap_remove_and_put
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - PLAIN_HASHMAP
    - hashmap_remove_and_put
    linkageType: ''
    returnType: int
    signature: int ordered_hashmap_remove_and_put(OrderedHashmap *h, const void *old_key,
      const void *new_key, void *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_remove_and_replace
      Src: /src/casync/src/hashmap.h:201,1
    - Dst: PLAIN_HASHMAP
      Src: /src/casync/src/hashmap.h:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - h
    - old_key
    - new_key
    - value
    argTypes:
    - OrderedHashmap*
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 202
    functionName: ordered_hashmap_remove_and_replace
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - hashmap_remove_and_replace
    - PLAIN_HASHMAP
    linkageType: ''
    returnType: int
    signature: int ordered_hashmap_remove_and_replace(OrderedHashmap *h, const void
      *old_key, const void *new_key, void *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - h
    - ','
    - other
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 208
    functionName: hashmap_merge
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hashmap_merge(h, other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - h
    - ','
    - other
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 209
    functionName: ordered_hashmap_merge
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ordered_hashmap_merge(h, other)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_reserve
      Src: /src/casync/src/hashmap.h:212,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - entries_add
    argTypes:
    - Hashmap*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 213
    functionName: hashmap_reserve
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_reserve
    linkageType: ''
    returnType: int
    signature: int hashmap_reserve(Hashmap *h, unsigned entries_add)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_reserve
      Src: /src/casync/src/hashmap.h:215,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - entries_add
    argTypes:
    - OrderedHashmap*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 216
    functionName: ordered_hashmap_reserve
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_reserve
    linkageType: ''
    returnType: int
    signature: int ordered_hashmap_reserve(OrderedHashmap *h, unsigned entries_add)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_move
      Src: /src/casync/src/hashmap.h:221,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:221,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - other
    argTypes:
    - Hashmap*
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 222
    functionName: hashmap_move
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_move
    linkageType: ''
    returnType: int
    signature: int hashmap_move(Hashmap *h, Hashmap *other)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_move
      Src: /src/casync/src/hashmap.h:224,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:224,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - other
    argTypes:
    - OrderedHashmap*
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 225
    functionName: ordered_hashmap_move
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_move
    linkageType: ''
    returnType: int
    signature: int ordered_hashmap_move(OrderedHashmap *h, OrderedHashmap *other)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_move_one
      Src: /src/casync/src/hashmap.h:229,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:229,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - h
    - other
    - key
    argTypes:
    - Hashmap*
    - Hashmap*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: hashmap_move_one
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_move_one
    linkageType: ''
    returnType: int
    signature: int hashmap_move_one(Hashmap *h, Hashmap *other, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_move_one
      Src: /src/casync/src/hashmap.h:232,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:232,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - h
    - other
    - key
    argTypes:
    - OrderedHashmap*
    - OrderedHashmap*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 233
    functionName: ordered_hashmap_move_one
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_move_one
    linkageType: ''
    returnType: int
    signature: int ordered_hashmap_move_one(OrderedHashmap *h, OrderedHashmap *other,
      const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_size
      Src: /src/casync/src/hashmap.h:237,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 238
    functionName: hashmap_size
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_size
    linkageType: ''
    returnType: unsigned
    signature: unsigned hashmap_size(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_size
      Src: /src/casync/src/hashmap.h:240,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 241
    functionName: ordered_hashmap_size
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_size
    linkageType: ''
    returnType: unsigned
    signature: unsigned ordered_hashmap_size(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_size
      Src: /src/casync/src/hashmap.h:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 245
    functionName: hashmap_isempty
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - hashmap_size
    linkageType: ''
    returnType: bool
    signature: bool hashmap_isempty(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ordered_hashmap_size
      Src: /src/casync/src/hashmap.h:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 246
    functionDepth: 2
    functionLinenumber: 246
    functionLinenumberEnd: 248
    functionName: ordered_hashmap_isempty
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - ordered_hashmap_size
    linkageType: ''
    returnType: bool
    signature: bool ordered_hashmap_isempty(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_buckets
      Src: /src/casync/src/hashmap.h:252,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 253
    functionName: hashmap_buckets
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_buckets
    linkageType: ''
    returnType: unsigned
    signature: unsigned hashmap_buckets(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_buckets
      Src: /src/casync/src/hashmap.h:255,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 256
    functionName: ordered_hashmap_buckets
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_buckets
    linkageType: ''
    returnType: unsigned
    signature: unsigned ordered_hashmap_buckets(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_iterate
      Src: /src/casync/src/hashmap.h:260,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - h
    - i
    - value
    - key
    argTypes:
    - Hashmap*
    - Iterator*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 261
    functionName: hashmap_iterate
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - internal_hashmap_iterate
    - HASHMAP_BASE
    linkageType: ''
    returnType: bool
    signature: bool hashmap_iterate(Hashmap *h, Iterator *i, void **value, const void
      **key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_iterate
      Src: /src/casync/src/hashmap.h:263,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - h
    - i
    - value
    - key
    argTypes:
    - OrderedHashmap*
    - Iterator*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 264
    functionName: ordered_hashmap_iterate
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - internal_hashmap_iterate
    - HASHMAP_BASE
    linkageType: ''
    returnType: bool
    signature: bool ordered_hashmap_iterate(OrderedHashmap *h, Iterator *i, void **value,
      const void **key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_clear
      Src: /src/casync/src/hashmap.h:268,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 269
    functionName: hashmap_clear
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - internal_hashmap_clear
    - HASHMAP_BASE
    linkageType: ''
    returnType: void
    signature: void hashmap_clear(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_clear
      Src: /src/casync/src/hashmap.h:271,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 272
    functionName: ordered_hashmap_clear
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - internal_hashmap_clear
    - HASHMAP_BASE
    linkageType: ''
    returnType: void
    signature: void ordered_hashmap_clear(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_clear_free
      Src: /src/casync/src/hashmap.h:276,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 277
    functionName: hashmap_clear_free
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - internal_hashmap_clear_free
    - HASHMAP_BASE
    linkageType: ''
    returnType: void
    signature: void hashmap_clear_free(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_clear_free
      Src: /src/casync/src/hashmap.h:279,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 280
    functionName: ordered_hashmap_clear_free
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - internal_hashmap_clear_free
    - HASHMAP_BASE
    linkageType: ''
    returnType: void
    signature: void ordered_hashmap_clear_free(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_clear_free_free
      Src: /src/casync/src/hashmap.h:284,1
    - Dst: PLAIN_HASHMAP
      Src: /src/casync/src/hashmap.h:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 285
    functionName: ordered_hashmap_clear_free_free
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - PLAIN_HASHMAP
    - hashmap_clear_free_free
    linkageType: ''
    returnType: void
    signature: void ordered_hashmap_clear_free_free(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_steal_first
      Src: /src/casync/src/hashmap.h:300,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 301
    functionName: hashmap_steal_first
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_steal_first
    linkageType: ''
    returnType: void
    signature: void *hashmap_steal_first(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_steal_first
      Src: /src/casync/src/hashmap.h:303,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 304
    functionName: ordered_hashmap_steal_first
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_steal_first
    linkageType: ''
    returnType: void
    signature: void *ordered_hashmap_steal_first(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_steal_first_key
      Src: /src/casync/src/hashmap.h:308,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 309
    functionName: hashmap_steal_first_key
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - internal_hashmap_steal_first_key
    - HASHMAP_BASE
    linkageType: ''
    returnType: void
    signature: void *hashmap_steal_first_key(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_steal_first_key
      Src: /src/casync/src/hashmap.h:311,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 312
    functionName: ordered_hashmap_steal_first_key
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - internal_hashmap_steal_first_key
    - HASHMAP_BASE
    linkageType: ''
    returnType: void
    signature: void *ordered_hashmap_steal_first_key(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_first_key
      Src: /src/casync/src/hashmap.h:316,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 317
    functionName: hashmap_first_key
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_first_key
    linkageType: ''
    returnType: void
    signature: void *hashmap_first_key(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_first_key
      Src: /src/casync/src/hashmap.h:319,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 320
    functionName: ordered_hashmap_first_key
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_first_key
    linkageType: ''
    returnType: void
    signature: void *ordered_hashmap_first_key(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_first
      Src: /src/casync/src/hashmap.h:324,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 325
    functionName: hashmap_first
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_first
    linkageType: ''
    returnType: void
    signature: void *hashmap_first(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_first
      Src: /src/casync/src/hashmap.h:327,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - OrderedHashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 328
    functionName: ordered_hashmap_first
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_first
    linkageType: ''
    returnType: void
    signature: void *ordered_hashmap_first(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_get_strv
      Src: /src/casync/src/hashmap.h:335,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 336
    functionName: hashmap_get_strv
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_get_strv
    linkageType: ''
    returnType: char
    signature: char **hashmap_get_strv(Hashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_get_strv
      Src: /src/casync/src/hashmap.h:338,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.h:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 339
    functionName: ordered_hashmap_get_strv
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_get_strv
    linkageType: ''
    returnType: char
    signature: char **ordered_hashmap_get_strv(OrderedHashmap *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - e
    - ','
    - h
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 349
    functionName: HASHMAP_FOREACH
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASHMAP_FOREACH(e, h, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - e
    - ','
    - h
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 352
    functionName: ORDERED_HASHMAP_FOREACH
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ORDERED_HASHMAP_FOREACH(e, h, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - e
    - ','
    - k
    - ','
    - h
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 355
    functionName: HASHMAP_FOREACH_KEY
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASHMAP_FOREACH_KEY(e, k, h, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - e
    - ','
    - k
    - ','
    - h
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 358
    functionName: ORDERED_HASHMAP_FOREACH_KEY
    functionSourceFile: /src/casync/src/hashmap.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ORDERED_HASHMAP_FOREACH_KEY(e, k, h, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 207
    functionName: CA_ENCODER_AT_ROOT
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CA_ENCODER_AT_ROOT(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:209,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:216,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:216,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaEncoder*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 208
        line_start: 208
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 217
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 217
    functionName: CA_ENCODER_IS_NAKED
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - S_ISREG
    - S_ISBLK
    linkageType: ''
    returnType: bool
    signature: bool CA_ENCODER_IS_NAKED(CaEncoder *e)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/caencoder.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 230
    functionName: ca_encoder_new
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 2
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaEncoder
    signature: CaEncoder *ca_encoder_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/casync/src/caencoder.c:236,1
    - Dst: mfree
      Src: /src/casync/src/caencoder.c:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - l
    - n
    argTypes:
    - CaEncoderACLEntry*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 239
    functionName: ca_encoder_acl_entry_free
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - mfree
    - free
    linkageType: ''
    returnType: CaEncoderACLEntry
    signature: CaEncoderACLEntry * ca_encoder_acl_entry_free(CaEncoderACLEntry *l,
      size_t n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:244,1
    - Dst: safe_close
      Src: /src/casync/src/caencoder.c:247,1
    - Dst: free
      Src: /src/casync/src/caencoder.c:252,1
    - Dst: mfree
      Src: /src/casync/src/caencoder.c:253,1
    - Dst: mfree
      Src: /src/casync/src/caencoder.c:256,1
    - Dst: free
      Src: /src/casync/src/caencoder.c:259,1
    - Dst: free
      Src: /src/casync/src/caencoder.c:260,1
    - Dst: mfree
      Src: /src/casync/src/caencoder.c:262,1
    - Dst: ca_encoder_acl_entry_free
      Src: /src/casync/src/caencoder.c:266,1
    - Dst: ca_encoder_acl_entry_free
      Src: /src/casync/src/caencoder.c:267,1
    - Dst: ca_encoder_acl_entry_free
      Src: /src/casync/src/caencoder.c:268,1
    - Dst: ca_encoder_acl_entry_free
      Src: /src/casync/src/caencoder.c:269,1
    - Dst: mfree
      Src: /src/casync/src/caencoder.c:279,1
    - Dst: freecon
      Src: /src/casync/src/caencoder.c:284,1
    - Dst: ca_name_table_unref
      Src: /src/casync/src/caencoder.c:293,1
    - Dst: ca_match_unref
      Src: /src/casync/src/caencoder.c:299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 40
    argCount: 1
    argNames:
    - n
    argTypes:
    - CaEncoderNode*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 243
        line_start: 243
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 300
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 300
    functionName: ca_encoder_node_free
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_name_table_unref
    - ca_encoder_acl_entry_free
    - mfree
    - safe_close
    - ca_match_unref
    - assert
    - freecon
    - free
    linkageType: ''
    returnType: void
    signature: void ca_encoder_node_free(CaEncoderNode *n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_node_free
      Src: /src/casync/src/caencoder.c:309,1
    - Dst: free
      Src: /src/casync/src/caencoder.c:311,1
    - Dst: free
      Src: /src/casync/src/caencoder.c:312,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/caencoder.c:314,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/caencoder.c:315,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/caencoder.c:316,1
    - Dst: ca_digest_free
      Src: /src/casync/src/caencoder.c:318,1
    - Dst: ca_digest_free
      Src: /src/casync/src/caencoder.c:319,1
    - Dst: ca_digest_free
      Src: /src/casync/src/caencoder.c:320,1
    - Dst: mfree
      Src: /src/casync/src/caencoder.c:322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaEncoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 302
    functionDepth: 4
    functionLinenumber: 302
    functionLinenumberEnd: 323
    functionName: ca_encoder_unref
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 3
    functionsReached:
    - mfree
    - ca_encoder_node_free
    - ca_digest_free
    - realloc_buffer_free
    - free
    linkageType: ''
    returnType: CaEncoder
    signature: CaEncoder *ca_encoder_unref(CaEncoder *e)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_feature_flags_normalize
      Src: /src/casync/src/caencoder.c:331,1
    - Dst: ca_feature_flags_time_granularity_nsec
      Src: /src/casync/src/caencoder.c:335,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - e
    - flags
    argTypes:
    - CaEncoder*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 344
    functionName: ca_encoder_set_feature_flags
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 2
    functionsReached:
    - ca_feature_flags_time_granularity_nsec
    - ca_feature_flags_normalize
    linkageType: ''
    returnType: int
    signature: int ca_encoder_set_feature_flags(CaEncoder *e, uint64_t flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 354
    functionName: ca_encoder_get_feature_flags
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_encoder_get_feature_flags(CaEncoder *e, uint64_t *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 364
    functionName: ca_encoder_get_covering_feature_flags
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_encoder_get_covering_feature_flags(CaEncoder *e, uint64_t *ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/casync/src/caencoder.c:377,1
    - Dst: fstatfs
      Src: /src/casync/src/caencoder.c:379,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:382,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:382,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:382,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - e
    - fd
    argTypes:
    - CaEncoder*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 403
    functionName: ca_encoder_set_base_fd
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 2
    functionsReached:
    - fstatfs
    - fstat
    - S_ISDIR
    - S_ISREG
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int ca_encoder_set_base_fd(CaEncoder *e, int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaEncoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 414
    functionName: ca_encoder_get_base_fd
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_encoder_get_base_fd(CaEncoder *e)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:417,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaEncoder*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 416
        line_start: 416
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 423
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 423
    functionName: ca_encoder_current_node
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: CaEncoderNode
    signature: CaEncoderNode * ca_encoder_current_node(CaEncoder *e)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaEncoder*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 425
        line_start: 425
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 432
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 432
    functionName: ca_encoder_current_child_node
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: CaEncoderNode
    signature: CaEncoderNode * ca_encoder_current_child_node(CaEncoder *e)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:438,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (n >= e->nodes)
      pos:
        line_end: 437
        line_start: 437
        source_file: /src/casync/src/caencoder.c
    - condition: (idx < e->n_nodes)
      pos:
        line_end: 439
        line_start: 439
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 446
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 446
    functionName: ca_encoder_node_child_of
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: CaEncoderNode
    signature: CaEncoderNode *ca_encoder_node_child_of(CaEncoder *e, CaEncoderNode
      *n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:452,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (n >= e->nodes)
      pos:
        line_end: 451
        line_start: 451
        source_file: /src/casync/src/caencoder.c
    - condition: (idx < e->n_nodes)
      pos:
        line_end: 453
        line_start: 453
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 460
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 460
    functionName: ca_encoder_node_parent_of
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: CaEncoderNode
    signature: CaEncoderNode *ca_encoder_node_parent_of(CaEncoder *e, CaEncoderNode
      *n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - n
    argTypes:
    - CaEncoderNode*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 462
        line_start: 462
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 471
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 471
    functionName: ca_encoder_node_current_dirent
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct dirent
    signature: struct dirent *ca_encoder_node_current_dirent(CaEncoderNode *n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_node_current_dirent
      Src: /src/casync/src/caencoder.c:476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - n
    argTypes:
    - CaEncoderNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 481
    functionName: ca_encoder_node_current_child_name
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_encoder_node_current_dirent
    linkageType: ''
    returnType: char
    signature: char *ca_encoder_node_current_child_name(CaEncoderNode *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:484,1
    - Dst: dot_or_dot_dot
      Src: /src/casync/src/caencoder.c:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - de
    argTypes:
    - struct dirent*
    assertStmts:
    - condition: (de)
      pos:
        line_end: 483
        line_start: 483
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 489
      start: 483
    functionDepth: 1
    functionLinenumber: 483
    functionLinenumberEnd: 489
    functionName: scandir_filter
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - dot_or_dot_dot
    linkageType: ''
    returnType: int
    signature: int scandir_filter(const struct dirent *de)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:492,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:493,1
    - Dst: strcmp
      Src: /src/casync/src/caencoder.c:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct dirent**
    - struct dirent**
    assertStmts:
    - condition: (a)
      pos:
        line_end: 491
        line_start: 491
        source_file: /src/casync/src/caencoder.c
    - condition: (b)
      pos:
        line_end: 492
        line_start: 492
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 498
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 498
    functionName: scandir_compare
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - strcmp
    - assert
    linkageType: ''
    returnType: int
    signature: int scandir_compare(const struct dirent **a, const struct dirent **b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:503,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:507,1
    - Dst: scandirat
      Src: /src/casync/src/caencoder.c:512,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - n
    argTypes:
    - CaEncoderNode*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 502
        line_start: 502
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 520
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 520
    functionName: ca_encoder_node_read_dirents
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - S_ISDIR
    - scandirat
    linkageType: ''
    returnType: int
    signature: int ca_encoder_node_read_dirents(CaEncoderNode *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/casync/src/caencoder.c:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - member
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 527
    functionName: dirent_bsearch_func
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int dirent_bsearch_func(const void *key, const void *member)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:531,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:532,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:534,1
    - Dst: ca_encoder_node_read_dirents
      Src: /src/casync/src/caencoder.c:544,1
    - Dst: bsearch
      Src: /src/casync/src/caencoder.c:548,1
    - Dst: _cleanup_
      Src: /src/casync/src/caencoder.c:553,1
    - Dst: ca_match_new_from_file
      Src: /src/casync/src/caencoder.c:555,1
    - Dst: ca_match_merge
      Src: /src/casync/src/caencoder.c:559,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 530
        line_start: 530
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 531
        line_start: 531
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 567
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 567
    functionName: ca_encoder_node_load_exclude_file
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - S_ISDIR
    - bsearch
    - ca_encoder_node_read_dirents
    - ca_match_new_from_file
    - ca_match_merge
    - assert
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_encoder_node_load_exclude_file(CaEncoder *e, CaEncoderNode *n)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:574,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:578,1
    - Dst: ioctl
      Src: /src/casync/src/caencoder.c:583,1
    - Dst: read_file_system_size
      Src: /src/casync/src/caencoder.c:588,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - n
    argTypes:
    - CaEncoderNode*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 573
        line_start: 573
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 599
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 599
    functionName: ca_encoder_node_read_device_size
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - ioctl
    - read_file_system_size
    - S_ISBLK
    linkageType: ''
    returnType: int
    signature: int ca_encoder_node_read_device_size(CaEncoderNode *n)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:608,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:609,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:610,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:612,1
    - Dst: S_ISLNK
      Src: /src/casync/src/caencoder.c:617,1
    - Dst: readlinkat_malloc
      Src: /src/casync/src/caencoder.c:622,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - n
    - de
    - symlink
    argTypes:
    - CaEncoderNode*
    - struct dirent*
    - CaEncoderNode*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 607
        line_start: 607
        source_file: /src/casync/src/caencoder.c
    - condition: (de)
      pos:
        line_end: 608
        line_start: 608
        source_file: /src/casync/src/caencoder.c
    - condition: (symlink)
      pos:
        line_end: 609
        line_start: 609
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 627
      start: 601
    functionDepth: 1
    functionLinenumber: 601
    functionLinenumberEnd: 627
    functionName: ca_encoder_node_read_symlink
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - readlinkat_malloc
    - assert
    - S_ISDIR
    - S_ISLNK
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_read_symlink(\n                CaEncoderNode *n,\n
      \               const struct dirent *de,\n                CaEncoderNode *symlink)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:634,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:635,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:637,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:637,1
    - Dst: read_attr_fd
      Src: /src/casync/src/caencoder.c:646,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 633
        line_start: 633
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 634
        line_start: 634
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 653
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 653
    functionName: ca_encoder_node_read_chattr
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - S_ISREG
    - S_ISDIR
    - read_attr_fd
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_read_chattr(\n                CaEncoder *e,\n
      \               CaEncoderNode *n)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:661,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:662,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:664,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:664,1
    - Dst: IN_SET
      Src: /src/casync/src/caencoder.c:673,1
    - Dst: read_fat_attr_fd
      Src: /src/casync/src/caencoder.c:676,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 660
        line_start: 660
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 661
        line_start: 661
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 685
      start: 655
    functionDepth: 1
    functionLinenumber: 655
    functionLinenumberEnd: 685
    functionName: ca_encoder_node_read_fat_attrs
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - IN_SET
    - S_ISDIR
    - S_ISREG
    - read_fat_attr_fd
    - assert
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_read_fat_attrs(\n                CaEncoder *e,\n
      \               CaEncoderNode *n)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:691,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:692,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:694,1
    - Dst: F_TYPE_EQUAL
      Src: /src/casync/src/caencoder.c:703,1
    - Dst: ioctl
      Src: /src/casync/src/caencoder.c:708,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 690
        line_start: 690
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 691
        line_start: 691
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 722
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 722
    functionName: ca_encoder_node_read_btrfs
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - ioctl
    - S_ISDIR
    - F_TYPE_EQUAL
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_read_btrfs(\n                CaEncoder *e,\n                CaEncoderNode
      *n)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:733,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:734,1
    - Dst: fgetfilecon
      Src: /src/casync/src/caencoder.c:743,1
    - Dst: ca_encoder_node_parent_of
      Src: /src/casync/src/caencoder.c:749,1
    - Dst: ca_encoder_node_current_dirent
      Src: /src/casync/src/caencoder.c:753,1
    - Dst: asprintf
      Src: /src/casync/src/caencoder.c:757,1
    - Dst: lgetfilecon
      Src: /src/casync/src/caencoder.c:760,1
    - Dst: IN_SET
      Src: /src/casync/src/caencoder.c:764,1
    - Dst: freecon
      Src: /src/casync/src/caencoder.c:768,1
    - Dst: freecon
      Src: /src/casync/src/caencoder.c:773,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 732
        line_start: 732
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 733
        line_start: 733
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 784
      start: 724
    functionDepth: 1
    functionLinenumber: 724
    functionLinenumberEnd: 784
    functionName: ca_encoder_node_read_selinux_label
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - lgetfilecon
    - IN_SET
    - ca_encoder_node_current_dirent
    - asprintf
    - ca_encoder_node_parent_of
    - fgetfilecon
    - assert
    - freecon
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_read_selinux_label(\n                CaEncoder
      *e,\n                CaEncoderNode *n)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:790,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:791,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:793,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:793,1
    - Dst: ioctl
      Src: /src/casync/src/caencoder.c:800,1
    - Dst: ERRNO_IS_UNSUPPORTED
      Src: /src/casync/src/caencoder.c:802,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 789
        line_start: 789
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 790
        line_start: 790
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 810
      start: 786
    functionDepth: 1
    functionLinenumber: 786
    functionLinenumberEnd: 810
    functionName: ca_encoder_node_read_generation
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ERRNO_IS_UNSUPPORTED
    - S_ISDIR
    - S_ISREG
    - ioctl
    - assert
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_read_generation(\n                CaEncoder *e,\n
      \               CaEncoderNode *n)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:818,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:819,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:821,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:821,1
    - Dst: IN_SET
      Src: /src/casync/src/caencoder.c:830,1
    - Dst: read_quota_projid
      Src: /src/casync/src/caencoder.c:831,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 817
        line_start: 817
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 818
        line_start: 818
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 839
      start: 812
    functionDepth: 1
    functionLinenumber: 812
    functionLinenumberEnd: 839
    functionName: ca_encoder_node_read_quota_projid
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - read_quota_projid
    - IN_SET
    - S_ISDIR
    - S_ISREG
    - assert
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_read_quota_projid(\n                CaEncoder
      *e,\n                CaEncoderNode *n)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:844,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:845,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:846,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:847,1
    - Dst: strcmp
      Src: /src/casync/src/caencoder.c:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts:
    - condition: (x)
      pos:
        line_end: 843
        line_start: 843
        source_file: /src/casync/src/caencoder.c
    - condition: (y)
      pos:
        line_end: 844
        line_start: 844
        source_file: /src/casync/src/caencoder.c
    - condition: (x->name)
      pos:
        line_end: 845
        line_start: 845
        source_file: /src/casync/src/caencoder.c
    - condition: (y->name)
      pos:
        line_end: 846
        line_start: 846
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 850
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 850
    functionName: compare_xattr
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - strcmp
    - assert
    linkageType: ''
    returnType: int
    signature: int compare_xattr(const void *a, const void *b)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:861,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:862,1
    - Dst: S_ISLNK
      Src: /src/casync/src/caencoder.c:870,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:873,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:874,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:875,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:876,1
    - Dst: ca_encoder_node_parent_of
      Src: /src/casync/src/caencoder.c:882,1
    - Dst: ca_encoder_node_current_dirent
      Src: /src/casync/src/caencoder.c:888,1
    - Dst: openat
      Src: /src/casync/src/caencoder.c:895,1
    - Dst: realloc_buffer_acquire
      Src: /src/casync/src/caencoder.c:906,1
    - Dst: flistxattr
      Src: /src/casync/src/caencoder.c:912,1
    - Dst: IN_SET
      Src: /src/casync/src/caencoder.c:917,1
    - Dst: realloc_buffer_truncate
      Src: /src/casync/src/caencoder.c:927,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caencoder.c:939,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:940,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:946,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:947,1
    - Dst: ca_xattr_name_store
      Src: /src/casync/src/caencoder.c:949,1
    - Dst: streq
      Src: /src/casync/src/caencoder.c:951,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:951,1
    - Dst: new0
      Src: /src/casync/src/caencoder.c:965,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caencoder.c:972,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:973,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:978,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:979,1
    - Dst: ca_xattr_name_store
      Src: /src/casync/src/caencoder.c:981,1
    - Dst: streq
      Src: /src/casync/src/caencoder.c:982,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:982,1
    - Dst: realloc_buffer_acquire
      Src: /src/casync/src/caencoder.c:991,1
    - Dst: fgetxattr
      Src: /src/casync/src/caencoder.c:997,1
    - Dst: realloc_buffer_truncate
      Src: /src/casync/src/caencoder.c:1007,1
    - Dst: streq
      Src: /src/casync/src/caencoder.c:1021,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:1021,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1024,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1025,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:1027,1
    - Dst: realloc_buffer_steal
      Src: /src/casync/src/caencoder.c:1028,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1041,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1042,1
    - Dst: strdup
      Src: /src/casync/src/caencoder.c:1044,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:1050,1
    - Dst: realloc_buffer_steal
      Src: /src/casync/src/caencoder.c:1051,1
    - Dst: qsort
      Src: /src/casync/src/caencoder.c:1073,1
    - Dst: safe_close
      Src: /src/casync/src/caencoder.c:1079,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 169
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (left >= k + 1)
      pos:
        line_end: 946
        line_start: 946
        source_file: /src/casync/src/caencoder.c
    - condition: (e)
      pos:
        line_end: 860
        line_start: 860
        source_file: /src/casync/src/caencoder.c
    - condition: (!n->xattrs)
      pos:
        line_end: 872
        line_start: 872
        source_file: /src/casync/src/caencoder.c
    - condition: (!n->fcaps)
      pos:
        line_end: 874
        line_start: 874
        source_file: /src/casync/src/caencoder.c
    - condition: (!n->fcaps)
      pos:
        line_end: 1023
        line_start: 1023
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 861
        line_start: 861
        source_file: /src/casync/src/caencoder.c
    - condition: (n->xattrs)
      pos:
        line_end: 1040
        line_start: 1040
        source_file: /src/casync/src/caencoder.c
    - condition: (n->n_xattrs < count)
      pos:
        line_end: 1041
        line_start: 1041
        source_file: /src/casync/src/caencoder.c
    - condition: (n->n_xattrs == 0)
      pos:
        line_end: 873
        line_start: 873
        source_file: /src/casync/src/caencoder.c
    - condition: (n->fcaps_size == 0)
      pos:
        line_end: 875
        line_start: 875
        source_file: /src/casync/src/caencoder.c
    - condition: (left >= k + 1)
      pos:
        line_end: 978
        line_start: 978
        source_file: /src/casync/src/caencoder.c
    - condition: (n->fcaps_size == 0)
      pos:
        line_end: 1024
        line_start: 1024
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1082
      start: 852
    functionDepth: 3
    functionLinenumber: 852
    functionLinenumberEnd: 1082
    functionName: ca_encoder_node_read_xattrs
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - IN_SET
    - new0
    - ca_encoder_node_current_dirent
    - ca_encoder_node_parent_of
    - realloc_buffer_acquire
    - S_ISLNK
    - flistxattr
    - realloc_buffer_steal
    - strdup
    - realloc_buffer_truncate
    - assert
    - realloc_buffer_data
    - S_ISREG
    - qsort
    - streq
    - safe_close
    - strlen
    - openat
    - ca_xattr_name_store
    - fgetxattr
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_read_xattrs(\n                CaEncoder *e,\n
      \               CaEncoderNode *n)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1093,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1094,1
    - Dst: asprintf
      Src: /src/casync/src/caencoder.c:1103,1
    - Dst: fopen
      Src: /src/casync/src/caencoder.c:1106,1
    - Dst: getline
      Src: /src/casync/src/caencoder.c:1116,1
    - Dst: startswith
      Src: /src/casync/src/caencoder.c:1125,1
    - Dst: strspn
      Src: /src/casync/src/caencoder.c:1129,1
    - Dst: truncate_nl
      Src: /src/casync/src/caencoder.c:1130,1
    - Dst: safe_atoi
      Src: /src/casync/src/caencoder.c:1132,1
    - Dst: fclose
      Src: /src/casync/src/caencoder.c:1148,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 46
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1092
        line_start: 1092
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 1093
        line_start: 1093
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1151
      start: 1084
    functionDepth: 1
    functionLinenumber: 1084
    functionLinenumberEnd: 1151
    functionName: ca_encoder_node_read_mount_id
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - fclose
    - startswith
    - safe_atoi
    - fopen
    - asprintf
    - strspn
    - getline
    - assert
    - truncate_nl
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_read_mount_id(\n                CaEncoder *e,\n
      \               CaEncoderNode *n)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1156,1
    - Dst: uid_is_valid
      Src: /src/casync/src/caencoder.c:1158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - e
    - uid
    argTypes:
    - CaEncoder*
    - uid_t
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1155
        line_start: 1155
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1170
      start: 1153
    functionDepth: 1
    functionLinenumber: 1153
    functionLinenumberEnd: 1170
    functionName: ca_encoder_shift_uid
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - uid_is_valid
    linkageType: ''
    returnType: uid_t
    signature: uid_t ca_encoder_shift_uid(CaEncoder *e, uid_t uid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_shift_uid
      Src: /src/casync/src/caencoder.c:1174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - e
    - gid
    argTypes:
    - CaEncoder*
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1172
    functionDepth: 2
    functionLinenumber: 1172
    functionLinenumberEnd: 1175
    functionName: ca_encoder_shift_gid
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_encoder_shift_uid
    linkageType: ''
    returnType: gid_t
    signature: gid_t ca_encoder_shift_gid(CaEncoder *e, gid_t gid)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1181,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1182,1
    - Dst: uid_is_valid
      Src: /src/casync/src/caencoder.c:1184,1
    - Dst: sysconf
      Src: /src/casync/src/caencoder.c:1193,1
    - Dst: malloc
      Src: /src/casync/src/caencoder.c:1201,1
    - Dst: getpwuid_r
      Src: /src/casync/src/caencoder.c:1205,1
    - Dst: strdup
      Src: /src/casync/src/caencoder.c:1209,1
    - Dst: ca_encoder_shift_uid
      Src: /src/casync/src/caencoder.c:1224,1
    - Dst: uid_is_valid
      Src: /src/casync/src/caencoder.c:1225,1
    - Dst: asprintf
      Src: /src/casync/src/caencoder.c:1228,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 3
    argNames:
    - e
    - uid
    - ret
    argTypes:
    - CaEncoder*
    - uid_t
    - char**
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1180
        line_start: 1180
        source_file: /src/casync/src/caencoder.c
    - condition: (ret)
      pos:
        line_end: 1181
        line_start: 1181
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1236
      start: 1177
    functionDepth: 2
    functionLinenumber: 1177
    functionLinenumberEnd: 1236
    functionName: uid_to_name
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_encoder_shift_uid
    - sysconf
    - asprintf
    - malloc
    - uid_is_valid
    - strdup
    - getpwuid_r
    - assert
    linkageType: ''
    returnType: int
    signature: int uid_to_name(CaEncoder *e, uid_t uid, char **ret)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1242,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1243,1
    - Dst: sysconf
      Src: /src/casync/src/caencoder.c:1250,1
    - Dst: malloc
      Src: /src/casync/src/caencoder.c:1258,1
    - Dst: getgrgid_r
      Src: /src/casync/src/caencoder.c:1262,1
    - Dst: strdup
      Src: /src/casync/src/caencoder.c:1266,1
    - Dst: ca_encoder_shift_gid
      Src: /src/casync/src/caencoder.c:1281,1
    - Dst: gid_is_valid
      Src: /src/casync/src/caencoder.c:1282,1
    - Dst: asprintf
      Src: /src/casync/src/caencoder.c:1285,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 3
    argNames:
    - e
    - gid
    - ret
    argTypes:
    - CaEncoder*
    - gid_t
    - char**
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1241
        line_start: 1241
        source_file: /src/casync/src/caencoder.c
    - condition: (ret)
      pos:
        line_end: 1242
        line_start: 1242
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1293
      start: 1238
    functionDepth: 3
    functionLinenumber: 1238
    functionLinenumberEnd: 1293
    functionName: gid_to_name
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_encoder_shift_gid
    - sysconf
    - getgrgid_r
    - asprintf
    - malloc
    - strdup
    - gid_is_valid
    - assert
    linkageType: ''
    returnType: int
    signature: int gid_to_name(CaEncoder *e, gid_t gid, char **ret)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1299,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1300,1
    - Dst: strcmp
      Src: /src/casync/src/caencoder.c:1312,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts:
    - condition: (x)
      pos:
        line_end: 1298
        line_start: 1298
        source_file: /src/casync/src/caencoder.c
    - condition: (y)
      pos:
        line_end: 1299
        line_start: 1299
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1323
      start: 1295
    functionDepth: 0
    functionLinenumber: 1295
    functionLinenumberEnd: 1323
    functionName: compare_acl_entry
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - strcmp
    - assert
    linkageType: ''
    returnType: int
    signature: int compare_acl_entry(const void *a, const void *b)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1331,1
    - Dst: acl_get_permset
      Src: /src/casync/src/caencoder.c:1333,1
    - Dst: acl_get_perm
      Src: /src/casync/src/caencoder.c:1336,1
    - Dst: acl_get_perm
      Src: /src/casync/src/caencoder.c:1342,1
    - Dst: acl_get_perm
      Src: /src/casync/src/caencoder.c:1348,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - entry
    - ret
    argTypes:
    - acl_entry_t
    - uint64_t*
    assertStmts:
    - condition: (entry)
      pos:
        line_end: 1330
        line_start: 1330
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1356
      start: 1325
    functionDepth: 0
    functionLinenumber: 1325
    functionLinenumberEnd: 1356
    functionName: acl_entry_permissions
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - acl_get_permset
    - acl_get_perm
    linkageType: ''
    returnType: int
    signature: int acl_entry_permissions(acl_entry_t entry, uint64_t *ret)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1390,1
    - Dst: acl_get_entry
      Src: /src/casync/src/caencoder.c:1393,1
    - Dst: acl_get_entry
      Src: /src/casync/src/caencoder.c:1395,1
    - Dst: acl_get_tag_type
      Src: /src/casync/src/caencoder.c:1401,1
    - Dst: acl_entry_permissions
      Src: /src/casync/src/caencoder.c:1404,1
    - Dst: acl_get_qualifier
      Src: /src/casync/src/caencoder.c:1430,1
    - Dst: acl_free
      Src: /src/casync/src/caencoder.c:1435,1
    - Dst: uid_is_valid
      Src: /src/casync/src/caencoder.c:1437,1
    - Dst: ca_encoder_shift_uid
      Src: /src/casync/src/caencoder.c:1440,1
    - Dst: uid_is_valid
      Src: /src/casync/src/caencoder.c:1441,1
    - Dst: uid_to_name
      Src: /src/casync/src/caencoder.c:1448,1
    - Dst: GREEDY_REALLOC
      Src: /src/casync/src/caencoder.c:1453,1
    - Dst: acl_get_qualifier
      Src: /src/casync/src/caencoder.c:1469,1
    - Dst: acl_free
      Src: /src/casync/src/caencoder.c:1474,1
    - Dst: gid_is_valid
      Src: /src/casync/src/caencoder.c:1476,1
    - Dst: ca_encoder_shift_gid
      Src: /src/casync/src/caencoder.c:1479,1
    - Dst: gid_is_valid
      Src: /src/casync/src/caencoder.c:1480,1
    - Dst: gid_to_name
      Src: /src/casync/src/caencoder.c:1487,1
    - Dst: GREEDY_REALLOC
      Src: /src/casync/src/caencoder.c:1492,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1505,1
    - Dst: qsort
      Src: /src/casync/src/caencoder.c:1512,1
    - Dst: qsort
      Src: /src/casync/src/caencoder.c:1514,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1537,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 109
    argCount: 4
    argNames:
    - e
    - n
    - type
    - acl
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    - acl_type_t
    - acl_t
    assertStmts:
    - condition: (false)
      pos:
        line_end: 1389
        line_start: 1389
        source_file: /src/casync/src/caencoder.c
    - condition: (false)
      pos:
        line_end: 1504
        line_start: 1504
        source_file: /src/casync/src/caencoder.c
    - condition: (false)
      pos:
        line_end: 1536
        line_start: 1536
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1541
      start: 1358
    functionDepth: 4
    functionLinenumber: 1358
    functionLinenumberEnd: 1541
    functionName: ca_encoder_node_process_acl
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_encoder_shift_uid
    - acl_entry_permissions
    - uid_to_name
    - acl_get_tag_type
    - ca_encoder_shift_gid
    - GREEDY_REALLOC
    - gid_to_name
    - qsort
    - uid_is_valid
    - acl_free
    - acl_get_entry
    - acl_get_qualifier
    - assert
    - gid_is_valid
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_process_acl(\n                CaEncoder *e,\n
      \               CaEncoderNode *n,\n                acl_type_t type,\n                acl_t
      acl)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:1547,1
    - Dst: DECIMAL_STR_MAX
      Src: /src/casync/src/caencoder.c:1547,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1557,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1558,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1559,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1560,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1562,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1563,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1564,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1565,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1567,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1568,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1569,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1570,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1571,1
    - Dst: S_ISLNK
      Src: /src/casync/src/caencoder.c:1573,1
    - Dst: ca_encoder_node_parent_of
      Src: /src/casync/src/caencoder.c:1580,1
    - Dst: ca_encoder_node_current_dirent
      Src: /src/casync/src/caencoder.c:1586,1
    - Dst: openat
      Src: /src/casync/src/caencoder.c:1593,1
    - Dst: sprintf
      Src: /src/casync/src/caencoder.c:1600,1
    - Dst: acl_get_file
      Src: /src/casync/src/caencoder.c:1602,1
    - Dst: ca_encoder_node_process_acl
      Src: /src/casync/src/caencoder.c:1605,1
    - Dst: acl_free
      Src: /src/casync/src/caencoder.c:1609,1
    - Dst: IN_SET
      Src: /src/casync/src/caencoder.c:1612,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:1617,1
    - Dst: acl_get_file
      Src: /src/casync/src/caencoder.c:1618,1
    - Dst: ca_encoder_node_process_acl
      Src: /src/casync/src/caencoder.c:1621,1
    - Dst: acl_free
      Src: /src/casync/src/caencoder.c:1625,1
    - Dst: IN_SET
      Src: /src/casync/src/caencoder.c:1628,1
    - Dst: safe_close
      Src: /src/casync/src/caencoder.c:1638,1
    - Dst: acl_free
      Src: /src/casync/src/caencoder.c:1641,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 79
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (n->n_acl_group == 0)
      pos:
        line_end: 1558
        line_start: 1558
        source_file: /src/casync/src/caencoder.c
    - condition: (n->n_acl_user == 0)
      pos:
        line_end: 1556
        line_start: 1556
        source_file: /src/casync/src/caencoder.c
    - condition: (n->n_acl_default_user == 0)
      pos:
        line_end: 1561
        line_start: 1561
        source_file: /src/casync/src/caencoder.c
    - condition: (n->n_acl_default_group == 0)
      pos:
        line_end: 1563
        line_start: 1563
        source_file: /src/casync/src/caencoder.c
    - condition: (n->acl_group_obj_permissions == UINT64_MAX)
      pos:
        line_end: 1566
        line_start: 1566
        source_file: /src/casync/src/caencoder.c
    - condition: (n->acl_default_group_obj_permissions == UINT64_MAX)
      pos:
        line_end: 1568
        line_start: 1568
        source_file: /src/casync/src/caencoder.c
    - condition: (n->acl_default_mask_permissions == UINT64_MAX)
      pos:
        line_end: 1570
        line_start: 1570
        source_file: /src/casync/src/caencoder.c
    - condition: (!n->acl_user)
      pos:
        line_end: 1557
        line_start: 1557
        source_file: /src/casync/src/caencoder.c
    - condition: (!n->acl_group)
      pos:
        line_end: 1559
        line_start: 1559
        source_file: /src/casync/src/caencoder.c
    - condition: (!n->acl_default_user)
      pos:
        line_end: 1562
        line_start: 1562
        source_file: /src/casync/src/caencoder.c
    - condition: (!n->acl_default_group)
      pos:
        line_end: 1564
        line_start: 1564
        source_file: /src/casync/src/caencoder.c
    - condition: (n->acl_default_user_obj_permissions == UINT64_MAX)
      pos:
        line_end: 1567
        line_start: 1567
        source_file: /src/casync/src/caencoder.c
    - condition: (n->acl_default_other_permissions == UINT64_MAX)
      pos:
        line_end: 1569
        line_start: 1569
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1644
      start: 1543
    functionDepth: 5
    functionLinenumber: 1543
    functionLinenumberEnd: 1644
    functionName: ca_encoder_node_read_acl
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - DECIMAL_STR_MAX
    - safe_close
    - acl_get_file
    - IN_SET
    - S_ISDIR
    - strlen
    - sprintf
    - ca_encoder_node_current_dirent
    - ca_encoder_node_parent_of
    - openat
    - S_ISLNK
    - ca_encoder_node_process_acl
    - acl_free
    - assert
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_read_acl(\n                CaEncoder *e,\n                CaEncoderNode
      *n)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1652,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1653,1
    - Dst: mfree
      Src: /src/casync/src/caencoder.c:1666,1
    - Dst: uid_to_name
      Src: /src/casync/src/caencoder.c:1668,1
    - Dst: mfree
      Src: /src/casync/src/caencoder.c:1677,1
    - Dst: gid_to_name
      Src: /src/casync/src/caencoder.c:1679,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1651
        line_start: 1651
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 1652
        line_start: 1652
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1687
      start: 1646
    functionDepth: 4
    functionLinenumber: 1646
    functionLinenumberEnd: 1687
    functionName: ca_encoder_node_read_user_group_names
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - uid_to_name
    - mfree
    - gid_to_name
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_node_read_user_group_names(\n                CaEncoder
      *e,\n                CaEncoderNode *n)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1690,1
    - Dst: ca_encoder_node_free
      Src: /src/casync/src/caencoder.c:1693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaEncoder*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1689
        line_start: 1689
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1694
      start: 1689
    functionDepth: 4
    functionLinenumber: 1689
    functionLinenumberEnd: 1694
    functionName: ca_encoder_forget_children
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_encoder_node_free
    linkageType: ''
    returnType: void
    signature: void ca_encoder_forget_children(CaEncoder *e)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1699,1
    - Dst: ca_encoder_forget_children
      Src: /src/casync/src/caencoder.c:1701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaEncoder*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1698
        line_start: 1698
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1722
      start: 1696
    functionDepth: 5
    functionLinenumber: 1696
    functionLinenumberEnd: 1722
    functionName: ca_encoder_init_child
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_encoder_forget_children
    linkageType: ''
    returnType: CaEncoderNode
    signature: CaEncoderNode * ca_encoder_init_child(CaEncoder *e)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1729,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1730,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1731,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:1733,1
    - Dst: ca_encoder_init_child
      Src: /src/casync/src/caencoder.c:1738,1
    - Dst: IN_SET
      Src: /src/casync/src/caencoder.c:1742,1
    - Dst: fstatat
      Src: /src/casync/src/caencoder.c:1749,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:1753,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:1753,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:1755,1
    - Dst: openat
      Src: /src/casync/src/caencoder.c:1760,1
    - Dst: fstat
      Src: /src/casync/src/caencoder.c:1765,1
    - Dst: fstatfs
      Src: /src/casync/src/caencoder.c:1776,1
    - Dst: ca_encoder_node_read_symlink
      Src: /src/casync/src/caencoder.c:1782,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 3
    argNames:
    - e
    - n
    - de
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    - struct dirent*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1728
        line_start: 1728
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 1729
        line_start: 1729
        source_file: /src/casync/src/caencoder.c
    - condition: (de)
      pos:
        line_end: 1730
        line_start: 1730
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1787
      start: 1724
    functionDepth: 6
    functionLinenumber: 1724
    functionLinenumberEnd: 1787
    functionName: ca_encoder_open_child
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - fstatfs
    - IN_SET
    - ca_encoder_node_read_symlink
    - S_ISDIR
    - S_ISREG
    - fstat
    - openat
    - ca_encoder_init_child
    - fstatat
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_encoder_open_child(CaEncoder *e, CaEncoderNode *n, const struct
      dirent *de)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1790,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaEncoder*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1789
        line_start: 1789
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1799
      start: 1789
    functionDepth: 0
    functionLinenumber: 1789
    functionLinenumberEnd: 1799
    functionName: ca_encoder_enter_child
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_encoder_enter_child(CaEncoder *e)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1802,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaEncoder*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1801
        line_start: 1801
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1809
      start: 1801
    functionDepth: 0
    functionLinenumber: 1801
    functionLinenumberEnd: 1809
    functionName: ca_encoder_leave_child
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_encoder_leave_child(CaEncoder *e)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/caencoder.c:1812,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1816,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1817,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1818,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:1818,1
    - Dst: ca_encoder_current_child_node
      Src: /src/casync/src/caencoder.c:1822,1
    - Dst: S_ISLNK
      Src: /src/casync/src/caencoder.c:1826,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:1828,1
    - Dst: S_ISCHR
      Src: /src/casync/src/caencoder.c:1828,1
    - Dst: S_ISFIFO
      Src: /src/casync/src/caencoder.c:1830,1
    - Dst: S_ISSOCK
      Src: /src/casync/src/caencoder.c:1832,1
    - Dst: ca_encoder_node_read_chattr
      Src: /src/casync/src/caencoder.c:1836,1
    - Dst: ca_encoder_node_read_mount_id
      Src: /src/casync/src/caencoder.c:1844,1
    - Dst: ca_encoder_node_read_mount_id
      Src: /src/casync/src/caencoder.c:1847,1
    - Dst: ca_encoder_node_load_exclude_file
      Src: /src/casync/src/caencoder.c:1854,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caencoder.c:1856,1
    - Dst: ca_match_test
      Src: /src/casync/src/caencoder.c:1858,1
    - Dst: ca_encoder_node_current_child_name
      Src: /src/casync/src/caencoder.c:1858,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:1858,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caencoder.c:1860,1
    - Dst: ca_encoder_node_current_child_name
      Src: /src/casync/src/caencoder.c:1860,1
    - Dst: ca_match_merge
      Src: /src/casync/src/caencoder.c:1865,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caencoder.c:1867,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 41
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 1816
        line_start: 1816
        source_file: /src/casync/src/caencoder.c
    - condition: (e)
      pos:
        line_end: 1815
        line_start: 1815
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISDIR(n->stat.st_mode))
      pos:
        line_end: 1817
        line_start: 1817
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1870
      start: 1811
    functionDepth: 2
    functionLinenumber: 1811
    functionLinenumberEnd: 1870
    functionName: ca_encoder_shall_store_child_node
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - S_ISCHR
    - ca_encoder_node_read_mount_id
    - ca_match_merge
    - S_ISFIFO
    - ca_encoder_node_read_chattr
    - S_ISDIR
    - ca_match_test
    - ca_encoder_node_current_child_name
    - S_ISLNK
    - S_ISBLK
    - S_ISSOCK
    - assert
    - ca_encoder_current_child_node
    - log_debug_errno
    - ca_encoder_node_load_exclude_file
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_encoder_shall_store_child_node(CaEncoder *e, CaEncoderNode *n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1873,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1874,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:1879,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:1879,1
    - Dst: IN_SET
      Src: /src/casync/src/caencoder.c:1883,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1872
        line_start: 1872
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 1873
        line_start: 1873
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1905
      start: 1872
    functionDepth: 1
    functionLinenumber: 1872
    functionLinenumberEnd: 1905
    functionName: ca_encoder_node_shall_enumerate
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - S_ISREG
    - S_ISDIR
    - IN_SET
    linkageType: ''
    returnType: int
    signature: int ca_encoder_node_shall_enumerate(CaEncoder *e, CaEncoderNode *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1908,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1909,1
    - Dst: ca_feature_flags_from_magic
      Src: /src/casync/src/caencoder.c:1912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1907
        line_start: 1907
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 1908
        line_start: 1908
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1915
      start: 1907
    functionDepth: 1
    functionLinenumber: 1907
    functionLinenumberEnd: 1915
    functionName: ca_encoder_collect_covering_feature_flags
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_feature_flags_from_magic
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_encoder_collect_covering_feature_flags(CaEncoder *e, CaEncoderNode
      *n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1920,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1921,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:1923,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:1928,1
    - Dst: ca_encoder_node_read_device_size
      Src: /src/casync/src/caencoder.c:1929,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - n
    - ret
    argTypes:
    - CaEncoderNode*
    - uint64_t*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 1919
        line_start: 1919
        source_file: /src/casync/src/caencoder.c
    - condition: (ret)
      pos:
        line_end: 1920
        line_start: 1920
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1938
      start: 1917
    functionDepth: 2
    functionLinenumber: 1917
    functionLinenumberEnd: 1938
    functionName: ca_encoder_node_get_payload_size
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - S_ISREG
    - S_ISBLK
    - ca_encoder_node_read_device_size
    linkageType: ''
    returnType: int
    signature: int ca_encoder_node_get_payload_size(CaEncoderNode *n, uint64_t *ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - e
    - state
    argTypes:
    - CaEncoder*
    - CaEncoderState
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1940
        line_start: 1940
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1945
      start: 1940
    functionDepth: 0
    functionLinenumber: 1940
    functionLinenumberEnd: 1945
    functionName: ca_encoder_enter_state
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void ca_encoder_enter_state(CaEncoder *e, CaEncoderState state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1950,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1951,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1952,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:1955,1
    - Dst: ca_encoder_node_parent_of
      Src: /src/casync/src/caencoder.c:1965,1
    - Dst: ca_name_table_new
      Src: /src/casync/src/caencoder.c:1969,1
    - Dst: ca_name_table_ref
      Src: /src/casync/src/caencoder.c:1974,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - e
    - n
    - sub
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    - uint64_t
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1949
        line_start: 1949
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 1950
        line_start: 1950
        source_file: /src/casync/src/caencoder.c
    - condition: (!n->name_table)
      pos:
        line_end: 1951
        line_start: 1951
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 1977
      start: 1947
    functionDepth: 1
    functionLinenumber: 1947
    functionLinenumberEnd: 1977
    functionName: ca_encoder_initialize_name_table
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - S_ISDIR
    - ca_encoder_node_parent_of
    - ca_name_table_new
    - assert
    - ca_name_table_ref
    linkageType: ''
    returnType: int
    signature: int ca_encoder_initialize_name_table(CaEncoder *e, CaEncoderNode *n,
      uint64_t sub)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1983,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1984,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1985,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:1985,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1986,1
    - Dst: ca_name_table_unref
      Src: /src/casync/src/caencoder.c:1992,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:1996,1
    - Dst: ca_name_table_items
      Src: /src/casync/src/caencoder.c:1996,1
    - Dst: ca_name_table_last
      Src: /src/casync/src/caencoder.c:1997,1
    - Dst: ca_name_table_add
      Src: /src/casync/src/caencoder.c:1999,1
    - Dst: siphash24
      Src: /src/casync/src/caencoder.c:2004,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2004,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - e
    - n
    - name
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    - char*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 1982
        line_start: 1982
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISDIR(n->stat.st_mode))
      pos:
        line_end: 1984
        line_start: 1984
        source_file: /src/casync/src/caencoder.c
    - condition: (name)
      pos:
        line_end: 1985
        line_start: 1985
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 1983
        line_start: 1983
        source_file: /src/casync/src/caencoder.c
    - condition: "(ca_name_table_items(n->name_table) == 0 ||\n               ca_name_table_last(n->name_table)->end_offset
        != UINT64_MAX)"
      pos:
        line_end: 1996
        line_start: 1995
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2010
      start: 1979
    functionDepth: 1
    functionLinenumber: 1979
    functionLinenumberEnd: 2010
    functionName: ca_encoder_add_name_table_item
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_name_table_unref
    - ca_name_table_last
    - ca_name_table_add
    - S_ISDIR
    - strlen
    - ca_name_table_items
    - assert
    - siphash24
    linkageType: ''
    returnType: int
    signature: int ca_encoder_add_name_table_item(CaEncoder *e, CaEncoderNode *n,
      const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2016,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2017,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2018,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2018,1
    - Dst: ca_name_table_unref
      Src: /src/casync/src/caencoder.c:2024,1
    - Dst: ca_name_table_items
      Src: /src/casync/src/caencoder.c:2028,1
    - Dst: ca_name_table_make_writable
      Src: /src/casync/src/caencoder.c:2031,1
    - Dst: ca_name_table_last
      Src: /src/casync/src/caencoder.c:2035,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2036,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2038,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2039,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2041,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 2015
        line_start: 2015
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISDIR(n->stat.st_mode))
      pos:
        line_end: 2017
        line_start: 2017
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 2016
        line_start: 2016
        source_file: /src/casync/src/caencoder.c
    - condition: (item)
      pos:
        line_end: 2035
        line_start: 2035
        source_file: /src/casync/src/caencoder.c
    - condition: (item->start_offset != UINT64_MAX)
      pos:
        line_end: 2037
        line_start: 2037
        source_file: /src/casync/src/caencoder.c
    - condition: (item->end_offset == UINT64_MAX)
      pos:
        line_end: 2038
        line_start: 2038
        source_file: /src/casync/src/caencoder.c
    - condition: (item->start_offset <= e->archive_offset)
      pos:
        line_end: 2040
        line_start: 2040
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2045
      start: 2012
    functionDepth: 1
    functionLinenumber: 2012
    functionLinenumberEnd: 2045
    functionName: ca_encoder_update_name_table_end_offset
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_name_table_unref
    - ca_name_table_last
    - S_ISDIR
    - ca_name_table_make_writable
    - ca_name_table_items
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_encoder_update_name_table_end_offset(CaEncoder *e, CaEncoderNode
      *n)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2050,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2051,1
    - Dst: CA_ENCODER_IS_NAKED
      Src: /src/casync/src/caencoder.c:2057,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2058,1
    - Dst: CA_ENCODER_AT_ROOT
      Src: /src/casync/src/caencoder.c:2058,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2062,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2066,1
    - Dst: ca_encoder_step_node
      Src: /src/casync/src/caencoder.c:2068,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/caencoder.c:2075,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/caencoder.c:2080,1
    - Dst: ca_encoder_collect_covering_feature_flags
      Src: /src/casync/src/caencoder.c:2084,1
    - Dst: ca_encoder_initialize_name_table
      Src: /src/casync/src/caencoder.c:2088,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2092,1
    - Dst: ca_encoder_node_shall_enumerate
      Src: /src/casync/src/caencoder.c:2100,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:2104,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2106,1
    - Dst: ca_encoder_step_node
      Src: /src/casync/src/caencoder.c:2107,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2110,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2112,1
    - Dst: ca_encoder_step_node
      Src: /src/casync/src/caencoder.c:2113,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2117,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2120,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2125,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2131,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:2131,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:2131,1
    - Dst: ca_encoder_node_get_payload_size
      Src: /src/casync/src/caencoder.c:2133,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2138,1
    - Dst: CA_ENCODER_IS_NAKED
      Src: /src/casync/src/caencoder.c:2142,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2143,1
    - Dst: CA_ENCODER_AT_ROOT
      Src: /src/casync/src/caencoder.c:2143,1
    - Dst: ca_encoder_step
      Src: /src/casync/src/caencoder.c:2144,1
    - Dst: ca_encoder_update_name_table_end_offset
      Src: /src/casync/src/caencoder.c:2155,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2166,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2166,1
    - Dst: ca_encoder_node_read_dirents
      Src: /src/casync/src/caencoder.c:2168,1
    - Dst: ca_encoder_node_current_dirent
      Src: /src/casync/src/caencoder.c:2173,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2175,1
    - Dst: ca_encoder_open_child
      Src: /src/casync/src/caencoder.c:2179,1
    - Dst: ca_encoder_shall_store_child_node
      Src: /src/casync/src/caencoder.c:2184,1
    - Dst: ca_encoder_add_name_table_item
      Src: /src/casync/src/caencoder.c:2194,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2198,1
    - Dst: ca_encoder_enter_child
      Src: /src/casync/src/caencoder.c:2207,1
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:2211,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2215,1
    - Dst: ca_encoder_step_node
      Src: /src/casync/src/caencoder.c:2216,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2221,1
    - Dst: ca_encoder_leave_child
      Src: /src/casync/src/caencoder.c:2225,1
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:2231,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2235,1
    - Dst: ca_encoder_step_node
      Src: /src/casync/src/caencoder.c:2236,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:2239,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2243,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2246,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 126
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (CA_ENCODER_AT_ROOT(e))
      pos:
        line_end: 2057
        line_start: 2057
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISDIR(n->stat.st_mode))
      pos:
        line_end: 2165
        line_start: 2165
        source_file: /src/casync/src/caencoder.c
    - condition: (false)
      pos:
        line_end: 2242
        line_start: 2242
        source_file: /src/casync/src/caencoder.c
    - condition: (false)
      pos:
        line_end: 2245
        line_start: 2245
        source_file: /src/casync/src/caencoder.c
    - condition: (e)
      pos:
        line_end: 2049
        line_start: 2049
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 2050
        line_start: 2050
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISREG(n->stat.st_mode) || S_ISBLK(n->stat.st_mode))
      pos:
        line_end: 2130
        line_start: 2130
        source_file: /src/casync/src/caencoder.c
    - condition: (CA_ENCODER_AT_ROOT(e))
      pos:
        line_end: 2142
        line_start: 2142
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2247
      start: 2047
    functionDepth: 7
    functionLinenumber: 2047
    functionLinenumberEnd: 2247
    functionName: ca_encoder_step_node
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_encoder_step
    - ca_encoder_leave_child
    - ca_encoder_collect_covering_feature_flags
    - ca_encoder_node_current_dirent
    - ca_encoder_enter_child
    - ca_encoder_enter_state
    - S_ISDIR
    - ca_encoder_update_name_table_end_offset
    - ca_encoder_step_node
    - S_ISBLK
    - assert
    - CA_ENCODER_AT_ROOT
    - ca_encoder_shall_store_child_node
    - S_ISREG
    - ca_encoder_open_child
    - CA_ENCODER_IS_NAKED
    - ca_encoder_node_shall_enumerate
    - ca_encoder_node_get_payload_size
    - ca_encoder_current_node
    - ca_encoder_add_name_table_item
    - ca_encoder_initialize_name_table
    - ca_digest_reset
    - ca_encoder_node_read_dirents
    linkageType: ''
    returnType: int
    signature: int ca_encoder_step_node(CaEncoder *e, CaEncoderNode *n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2252,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:2255,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caencoder.c:2261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaEncoder*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 2251
        line_start: 2251
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2270
      start: 2249
    functionDepth: 1
    functionLinenumber: 2249
    functionLinenumberEnd: 2270
    functionName: ca_encoder_advance_buffer
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_empty
    - assert
    - realloc_buffer_size
    linkageType: ''
    returnType: void
    signature: void ca_encoder_advance_buffer(CaEncoder *e)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_advance_buffer
      Src: /src/casync/src/caencoder.c:2281,1
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:2283,1
    - Dst: ca_encoder_step_node
      Src: /src/casync/src/caencoder.c:2287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - e
    argTypes:
    - CaEncoder*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 2272
    functionDepth: 8
    functionLinenumber: 2272
    functionLinenumberEnd: 2288
    functionName: ca_encoder_step
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 3
    functionsReached:
    - ca_encoder_current_node
    - ca_encoder_step_node
    - ca_encoder_advance_buffer
    linkageType: ''
    returnType: int
    signature: int ca_encoder_step(CaEncoder *e)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2297,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2298,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2299,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:2299,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:2299,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2300,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2301,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:2301,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2302,1
    - Dst: ca_encoder_node_get_payload_size
      Src: /src/casync/src/caencoder.c:2304,1
    - Dst: MIN
      Src: /src/casync/src/caencoder.c:2311,1
    - Dst: realloc_buffer_acquire
      Src: /src/casync/src/caencoder.c:2315,1
    - Dst: pread
      Src: /src/casync/src/caencoder.c:2319,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caencoder.c:2332,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - e
    - n
    - suggested_size
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    - uint64_t
    assertStmts:
    - condition: (e)
      pos:
        line_end: 2296
        line_start: 2296
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISREG(n->stat.st_mode) || S_ISBLK(n->stat.st_mode))
      pos:
        line_end: 2298
        line_start: 2298
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 2297
        line_start: 2297
        source_file: /src/casync/src/caencoder.c
    - condition: (e->state == CA_ENCODER_IN_PAYLOAD)
      pos:
        line_end: 2299
        line_start: 2299
        source_file: /src/casync/src/caencoder.c
    - condition: (realloc_buffer_size(&e->buffer) == 0)
      pos:
        line_end: 2300
        line_start: 2300
        source_file: /src/casync/src/caencoder.c
    - condition: (e->skipped_bytes == 0)
      pos:
        line_end: 2301
        line_start: 2301
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2334
      start: 2290
    functionDepth: 3
    functionLinenumber: 2290
    functionLinenumberEnd: 2334
    functionName: ca_encoder_get_payload_data
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_encoder_node_get_payload_size
    - S_ISREG
    - pread
    - realloc_buffer_acquire
    - realloc_buffer_empty
    - S_ISBLK
    - assert
    - MIN
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_encoder_get_payload_data(CaEncoder *e, CaEncoderNode *n, uint64_t
      suggested_size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2340,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2341,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2342,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:2342,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:2342,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2343,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2344,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:2344,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2345,1
    - Dst: ca_encoder_node_get_payload_size
      Src: /src/casync/src/caencoder.c:2351,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - e
    - n
    - suggested_size
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    - uint64_t
    assertStmts:
    - condition: (e)
      pos:
        line_end: 2339
        line_start: 2339
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISREG(n->stat.st_mode) || S_ISBLK(n->stat.st_mode))
      pos:
        line_end: 2341
        line_start: 2341
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 2340
        line_start: 2340
        source_file: /src/casync/src/caencoder.c
    - condition: (e->state == CA_ENCODER_IN_PAYLOAD)
      pos:
        line_end: 2342
        line_start: 2342
        source_file: /src/casync/src/caencoder.c
    - condition: (realloc_buffer_size(&e->buffer) == 0)
      pos:
        line_end: 2343
        line_start: 2343
        source_file: /src/casync/src/caencoder.c
    - condition: (e->skipped_bytes == 0)
      pos:
        line_end: 2344
        line_start: 2344
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2366
      start: 2336
    functionDepth: 3
    functionLinenumber: 2336
    functionLinenumberEnd: 2366
    functionName: ca_encoder_skip_payload_data
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_encoder_node_get_payload_size
    - S_ISREG
    - S_ISBLK
    - assert
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_encoder_skip_payload_data(CaEncoder *e, CaEncoderNode *n, uint64_t
      suggested_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2372,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2373,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2374,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2375,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:2375,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2376,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2378,1
    - Dst: realloc_buffer_acquire
      Src: /src/casync/src/caencoder.c:2380,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2385,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2386,1
    - Dst: strcpy
      Src: /src/casync/src/caencoder.c:2389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - e
    - de
    argTypes:
    - CaEncoder*
    - struct dirent*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 2371
        line_start: 2371
        source_file: /src/casync/src/caencoder.c
    - condition: (de)
      pos:
        line_end: 2372
        line_start: 2372
        source_file: /src/casync/src/caencoder.c
    - condition: (e->state == CA_ENCODER_FILENAME)
      pos:
        line_end: 2373
        line_start: 2373
        source_file: /src/casync/src/caencoder.c
    - condition: (realloc_buffer_size(&e->buffer) == 0)
      pos:
        line_end: 2374
        line_start: 2374
        source_file: /src/casync/src/caencoder.c
    - condition: (e->skipped_bytes == 0)
      pos:
        line_end: 2375
        line_start: 2375
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2392
      start: 2368
    functionDepth: 2
    functionLinenumber: 2368
    functionLinenumberEnd: 2392
    functionName: ca_encoder_get_filename_data
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - htole64
    - strlen
    - realloc_buffer_acquire
    - strcpy
    - assert
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_encoder_get_filename_data(CaEncoder *e, const struct dirent
      *de)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2397,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2398,1
    - Dst: timespec_to_nsec
      Src: /src/casync/src/caencoder.c:2403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 2396
        line_start: 2396
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 2397
        line_start: 2397
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2408
      start: 2394
    functionDepth: 1
    functionLinenumber: 2394
    functionLinenumberEnd: 2408
    functionName: ca_encoder_fixup_mtime
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - timespec_to_nsec
    - assert
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t ca_encoder_fixup_mtime(CaEncoder *e, CaEncoderNode *n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2413,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2414,1
    - Dst: S_ISLNK
      Src: /src/casync/src/caencoder.c:2417,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2422,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2422,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2424,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 2412
        line_start: 2412
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 2413
        line_start: 2413
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2427
      start: 2410
    functionDepth: 0
    functionLinenumber: 2410
    functionLinenumberEnd: 2427
    functionName: ca_encoder_fixup_mode
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - assert
    - S_ISDIR
    - S_ISLNK
    linkageType: ''
    returnType: mode_t
    signature: mode_t ca_encoder_fixup_mode(CaEncoder *e, CaEncoderNode *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - l
    - n
    argTypes:
    - CaEncoderACLEntry*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2437
      start: 2429
    functionDepth: 0
    functionLinenumber: 2429
    functionLinenumberEnd: 2437
    functionName: ca_encoder_format_acl_user_size
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t ca_encoder_format_acl_user_size(CaEncoderACLEntry *l, size_t
      n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - l
    - n
    argTypes:
    - CaEncoderACLEntry*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2447
      start: 2439
    functionDepth: 0
    functionLinenumber: 2439
    functionLinenumberEnd: 2447
    functionName: ca_encoder_format_acl_group_size
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t ca_encoder_format_acl_group_size(CaEncoderACLEntry *l, size_t
      n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2453,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2454,1
    - Dst: alloca0
      Src: /src/casync/src/caencoder.c:2456,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2461,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2462,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2463,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2468,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2468,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2469,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2471,1
    - Dst: stpcpy
      Src: /src/casync/src/caencoder.c:2473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - e
    - p
    - type
    - l
    - n
    argTypes:
    - CaEncoder*
    - void*
    - uint64_t
    - CaEncoderACLEntry*
    - size_t
    assertStmts:
    - condition: (e)
      pos:
        line_end: 2452
        line_start: 2452
        source_file: /src/casync/src/caencoder.c
    - condition: (p)
      pos:
        line_end: 2453
        line_start: 2453
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2477
      start: 2449
    functionDepth: 1
    functionLinenumber: 2449
    functionLinenumberEnd: 2477
    functionName: ca_encoder_format_acl_user_append
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - htole64
    - stpcpy
    - strlen
    - mempcpy
    - assert
    - alloca0
    linkageType: ''
    returnType: void
    signature: void *ca_encoder_format_acl_user_append(CaEncoder *e, void *p, uint64_t
      type, CaEncoderACLEntry *l, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2483,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2484,1
    - Dst: alloca0
      Src: /src/casync/src/caencoder.c:2486,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2491,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2492,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2493,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2498,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2498,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2499,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2501,1
    - Dst: stpcpy
      Src: /src/casync/src/caencoder.c:2503,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - e
    - p
    - type
    - l
    - n
    argTypes:
    - CaEncoder*
    - void*
    - uint64_t
    - CaEncoderACLEntry*
    - size_t
    assertStmts:
    - condition: (e)
      pos:
        line_end: 2482
        line_start: 2482
        source_file: /src/casync/src/caencoder.c
    - condition: (p)
      pos:
        line_end: 2483
        line_start: 2483
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2507
      start: 2479
    functionDepth: 1
    functionLinenumber: 2479
    functionLinenumberEnd: 2507
    functionName: ca_encoder_format_acl_group_append
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - htole64
    - stpcpy
    - strlen
    - mempcpy
    - assert
    - alloca0
    linkageType: ''
    returnType: void
    signature: void *ca_encoder_format_acl_group_append(CaEncoder *e, void *p, uint64_t
      type, CaEncoderACLEntry *l, size_t n)
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2516,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2517,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2518,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2519,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:2519,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2520,1
    - Dst: ca_encoder_node_read_chattr
      Src: /src/casync/src/caencoder.c:2522,1
    - Dst: ca_encoder_node_read_fat_attrs
      Src: /src/casync/src/caencoder.c:2526,1
    - Dst: ca_encoder_node_read_btrfs
      Src: /src/casync/src/caencoder.c:2530,1
    - Dst: ca_encoder_node_read_selinux_label
      Src: /src/casync/src/caencoder.c:2534,1
    - Dst: ca_encoder_node_read_xattrs
      Src: /src/casync/src/caencoder.c:2538,1
    - Dst: ca_encoder_node_read_acl
      Src: /src/casync/src/caencoder.c:2542,1
    - Dst: ca_encoder_node_read_user_group_names
      Src: /src/casync/src/caencoder.c:2546,1
    - Dst: ca_encoder_node_read_quota_projid
      Src: /src/casync/src/caencoder.c:2550,1
    - Dst: ca_encoder_shift_uid
      Src: /src/casync/src/caencoder.c:2558,1
    - Dst: uid_is_valid
      Src: /src/casync/src/caencoder.c:2559,1
    - Dst: ca_encoder_shift_gid
      Src: /src/casync/src/caencoder.c:2562,1
    - Dst: gid_is_valid
      Src: /src/casync/src/caencoder.c:2563,1
    - Dst: S_ISLNK
      Src: /src/casync/src/caencoder.c:2576,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:2580,1
    - Dst: S_ISCHR
      Src: /src/casync/src/caencoder.c:2580,1
    - Dst: S_ISFIFO
      Src: /src/casync/src/caencoder.c:2584,1
    - Dst: S_ISSOCK
      Src: /src/casync/src/caencoder.c:2588,1
    - Dst: ca_encoder_fixup_mtime
      Src: /src/casync/src/caencoder.c:2591,1
    - Dst: ca_encoder_fixup_mode
      Src: /src/casync/src/caencoder.c:2592,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2594,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:2594,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2598,1
    - Dst: ca_feature_flags_from_chattr
      Src: /src/casync/src/caencoder.c:2599,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2603,1
    - Dst: ca_feature_flags_from_fat_attrs
      Src: /src/casync/src/caencoder.c:2604,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2608,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2610,1
    - Dst: ca_encoder_node_shall_enumerate
      Src: /src/casync/src/caencoder.c:2617,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2626,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2629,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2634,1
    - Dst: ca_encoder_format_acl_user_size
      Src: /src/casync/src/caencoder.c:2637,1
    - Dst: ca_encoder_format_acl_group_size
      Src: /src/casync/src/caencoder.c:2638,1
    - Dst: ca_encoder_format_acl_user_size
      Src: /src/casync/src/caencoder.c:2649,1
    - Dst: ca_encoder_format_acl_group_size
      Src: /src/casync/src/caencoder.c:2650,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2653,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:2661,1
    - Dst: S_ISLNK
      Src: /src/casync/src/caencoder.c:2663,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2665,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:2666,1
    - Dst: S_ISCHR
      Src: /src/casync/src/caencoder.c:2666,1
    - Dst: realloc_buffer_acquire
      Src: /src/casync/src/caencoder.c:2669,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2674,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2675,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2676,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2677,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2678,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2679,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2680,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2681,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2690,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2691,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2691,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2694,1
    - Dst: stpcpy
      Src: /src/casync/src/caencoder.c:2695,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2700,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2701,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2701,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2704,1
    - Dst: stpcpy
      Src: /src/casync/src/caencoder.c:2705,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2711,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2712,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2713,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2717,1
    - Dst: stpcpy
      Src: /src/casync/src/caencoder.c:2718,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2719,1
    - Dst: ca_encoder_format_acl_user_append
      Src: /src/casync/src/caencoder.c:2723,1
    - Dst: ca_encoder_format_acl_group_append
      Src: /src/casync/src/caencoder.c:2724,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2728,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2729,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2730,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2733,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2741,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2742,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2743,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2744,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2745,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2746,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2749,1
    - Dst: ca_encoder_format_acl_user_append
      Src: /src/casync/src/caencoder.c:2752,1
    - Dst: ca_encoder_format_acl_group_append
      Src: /src/casync/src/caencoder.c:2753,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2757,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2758,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2758,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2761,1
    - Dst: stpcpy
      Src: /src/casync/src/caencoder.c:2762,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2767,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2768,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2771,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2772,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2777,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2778,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2779,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2782,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:2785,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2787,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2788,1
    - Dst: memcpy
      Src: /src/casync/src/caencoder.c:2791,1
    - Dst: S_ISLNK
      Src: /src/casync/src/caencoder.c:2793,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2795,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2796,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:2796,1
    - Dst: mempcpy
      Src: /src/casync/src/caencoder.c:2799,1
    - Dst: strcpy
      Src: /src/casync/src/caencoder.c:2800,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:2802,1
    - Dst: S_ISCHR
      Src: /src/casync/src/caencoder.c:2802,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2804,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2805,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2806,1
    - Dst: major
      Src: /src/casync/src/caencoder.c:2806,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2807,1
    - Dst: minor
      Src: /src/casync/src/caencoder.c:2807,1
    - Dst: memcpy
      Src: /src/casync/src/caencoder.c:2810,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 151
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 2515
        line_start: 2515
        source_file: /src/casync/src/caencoder.c
    - condition: (n->chattr_flags_valid)
      pos:
        line_end: 2597
        line_start: 2597
        source_file: /src/casync/src/caencoder.c
    - condition: (realloc_buffer_size(&e->buffer) == 0)
      pos:
        line_end: 2518
        line_start: 2518
        source_file: /src/casync/src/caencoder.c
    - condition: (e->state == CA_ENCODER_ENTRY)
      pos:
        line_end: 2517
        line_start: 2517
        source_file: /src/casync/src/caencoder.c
    - condition: (e->skipped_bytes == 0)
      pos:
        line_end: 2519
        line_start: 2519
        source_file: /src/casync/src/caencoder.c
    - condition: (n->fat_attrs_valid)
      pos:
        line_end: 2602
        line_start: 2602
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 2516
        line_start: 2516
        source_file: /src/casync/src/caencoder.c
    - condition: (n->subvolume_valid)
      pos:
        line_end: 2609
        line_start: 2609
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2816
      start: 2509
    functionDepth: 6
    functionLinenumber: 2509
    functionLinenumberEnd: 2816
    functionName: ca_encoder_get_entry_data
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - stpcpy
    - S_ISFIFO
    - ca_encoder_node_read_fat_attrs
    - realloc_buffer_acquire
    - mempcpy
    - strcpy
    - S_ISLNK
    - S_ISSOCK
    - S_ISCHR
    - ca_encoder_format_acl_group_size
    - ca_encoder_shift_uid
    - ca_encoder_format_acl_user_append
    - memcpy
    - ca_encoder_node_read_chattr
    - ca_encoder_fixup_mode
    - S_ISDIR
    - ca_encoder_node_read_quota_projid
    - S_ISBLK
    - ca_encoder_node_read_user_group_names
    - assert
    - ca_encoder_format_acl_group_append
    - minor
    - ca_feature_flags_from_chattr
    - ca_encoder_node_read_xattrs
    - S_ISREG
    - major
    - ca_feature_flags_from_fat_attrs
    - ca_encoder_node_read_acl
    - gid_is_valid
    - ca_encoder_node_shall_enumerate
    - ca_encoder_node_read_selinux_label
    - htole64
    - ca_encoder_shift_gid
    - ca_encoder_node_read_btrfs
    - strlen
    - uid_is_valid
    - ca_encoder_format_acl_user_size
    - ca_encoder_fixup_mtime
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_encoder_get_entry_data(CaEncoder *e, CaEncoderNode *n)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/caencoder.c:2819,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2826,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2827,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2828,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2828,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2829,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2830,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:2830,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2831,1
    - Dst: assert_cc
      Src: /src/casync/src/caencoder.c:2833,1
    - Dst: ca_name_table_items
      Src: /src/casync/src/caencoder.c:2844,1
    - Dst: realloc_buffer_acquire
      Src: /src/casync/src/caencoder.c:2847,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2852,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2853,1
    - Dst: ca_name_table_make_bst
      Src: /src/casync/src/caencoder.c:2856,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2868,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2869,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2870,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2873,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2874,1
    - Dst: htole64
      Src: /src/casync/src/caencoder.c:2875,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2879,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2880,1
    - Dst: write_le64
      Src: /src/casync/src/caencoder.c:2884,1
    - Dst: write_le64
      Src: /src/casync/src/caencoder.c:2885,1
    - Dst: write_le64
      Src: /src/casync/src/caencoder.c:2886,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 2
    argNames:
    - e
    - n
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    assertStmts:
    - condition: (bst->entry_offset < start_offset)
      pos:
        line_end: 2879
        line_start: 2879
        source_file: /src/casync/src/caencoder.c
    - condition: (e->state == CA_ENCODER_GOODBYE)
      pos:
        line_end: 2828
        line_start: 2828
        source_file: /src/casync/src/caencoder.c
    - condition: (e->skipped_bytes == 0)
      pos:
        line_end: 2830
        line_start: 2830
        source_file: /src/casync/src/caencoder.c
    - condition: (bst->items[i].start_offset < bst->items[i].end_offset)
      pos:
        line_end: 2869
        line_start: 2869
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISDIR(n->stat.st_mode))
      pos:
        line_end: 2827
        line_start: 2827
        source_file: /src/casync/src/caencoder.c
    - condition: (bst->items[i].end_offset <= start_offset)
      pos:
        line_end: 2868
        line_start: 2868
        source_file: /src/casync/src/caencoder.c
    - condition: (bst->entry_offset != UINT64_MAX)
      pos:
        line_end: 2878
        line_start: 2878
        source_file: /src/casync/src/caencoder.c
    - condition: (n)
      pos:
        line_end: 2826
        line_start: 2826
        source_file: /src/casync/src/caencoder.c
    - condition: (e)
      pos:
        line_end: 2825
        line_start: 2825
        source_file: /src/casync/src/caencoder.c
    - condition: (realloc_buffer_size(&e->buffer) == 0)
      pos:
        line_end: 2829
        line_start: 2829
        source_file: /src/casync/src/caencoder.c
    - condition: (bst->items[i].start_offset < start_offset)
      pos:
        line_end: 2867
        line_start: 2867
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 2889
      start: 2818
    functionDepth: 2
    functionLinenumber: 2818
    functionLinenumberEnd: 2889
    functionName: ca_encoder_get_goodbye_data
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - htole64
    - S_ISDIR
    - _cleanup_
    - realloc_buffer_acquire
    - ca_name_table_make_bst
    - ca_name_table_items
    - write_le64
    - assert
    - assert_cc
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_encoder_get_goodbye_data(CaEncoder *e, CaEncoderNode *n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_ensure_allocated
      Src: /src/casync/src/caencoder.c:2899,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/caencoder.c:2899,1
    - Dst: ca_digest_write
      Src: /src/casync/src/caencoder.c:2903,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - e
    - digest
    - p
    - l
    argTypes:
    - CaEncoder*
    - CaDigest**
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2905
      start: 2891
    functionDepth: 4
    functionLinenumber: 2891
    functionLinenumberEnd: 2905
    functionName: ca_encoder_write_digest
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_digest_ensure_allocated
    - ca_digest_write
    - ca_feature_flags_to_digest_type
    linkageType: ''
    returnType: int
    signature: int ca_encoder_write_digest(CaEncoder *e, CaDigest **digest, const
      void *p, size_t l)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:2926,1
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:2930,1
    - Dst: IN_SET
      Src: /src/casync/src/caencoder.c:2937,1
    - Dst: ca_encoder_get_entry_data
      Src: /src/casync/src/caencoder.c:2947,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2954,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:2954,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:2954,1
    - Dst: ca_encoder_skip_payload_data
      Src: /src/casync/src/caencoder.c:2959,1
    - Dst: ca_encoder_get_payload_data
      Src: /src/casync/src/caencoder.c:2961,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2969,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2969,1
    - Dst: ca_encoder_node_current_dirent
      Src: /src/casync/src/caencoder.c:2971,1
    - Dst: ca_encoder_get_filename_data
      Src: /src/casync/src/caencoder.c:2975,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:2980,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:2980,1
    - Dst: ca_encoder_get_goodbye_data
      Src: /src/casync/src/caencoder.c:2982,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/src/caencoder.c:2992,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3001,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:3001,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3002,1
    - Dst: ca_encoder_write_digest
      Src: /src/casync/src/caencoder.c:3012,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caencoder.c:3012,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:3012,1
    - Dst: ca_encoder_write_digest
      Src: /src/casync/src/caencoder.c:3014,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caencoder.c:3014,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:3014,1
    - Dst: ca_encoder_write_digest
      Src: /src/casync/src/caencoder.c:3016,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caencoder.c:3016,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:3016,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caencoder.c:3020,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caencoder.c:3023,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 71
    argCount: 4
    argNames:
    - e
    - suggested_size
    - ret
    - ret_size
    argTypes:
    - CaEncoder*
    - uint64_t
    - void**
    - size_t*
    assertStmts:
    - condition: (S_ISREG(n->stat.st_mode) || S_ISBLK(n->stat.st_mode))
      pos:
        line_end: 2953
        line_start: 2953
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISDIR(n->stat.st_mode))
      pos:
        line_end: 2979
        line_start: 2979
        source_file: /src/casync/src/caencoder.c
    - condition: (e->skipped_bytes == 0)
      pos:
        line_end: 3001
        line_start: 3001
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISDIR(n->stat.st_mode))
      pos:
        line_end: 2968
        line_start: 2968
        source_file: /src/casync/src/caencoder.c
    - condition: (realloc_buffer_size(&e->buffer) == 0)
      pos:
        line_end: 3000
        line_start: 3000
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 3026
      start: 2907
    functionDepth: 7
    functionLinenumber: 2907
    functionLinenumberEnd: 3026
    functionName: ca_encoder_get_data
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 3
    functionsReached:
    - ca_encoder_skip_payload_data
    - realloc_buffer_data
    - IN_SET
    - S_ISDIR
    - S_ISREG
    - ca_encoder_node_current_dirent
    - ca_encoder_current_node
    - ca_encoder_get_goodbye_data
    - ca_encoder_get_filename_data
    - ca_encoder_write_digest
    - S_ISBLK
    - assert
    - ca_encoder_get_entry_data
    - realloc_buffer_advance
    - ca_encoder_get_payload_data
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: "int ca_encoder_get_data(\n                CaEncoder *e,\n                uint64_t
      suggested_size,\n                const void **ret,\n                size_t *ret_size)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_node_current_dirent
      Src: /src/casync/src/caencoder.c:3053,1
    - Dst: strlen
      Src: /src/casync/src/caencoder.c:3057,1
    - Dst: realloc
      Src: /src/casync/src/caencoder.c:3060,1
    - Dst: strcpy
      Src: /src/casync/src/caencoder.c:3068,1
    - Dst: strdup
      Src: /src/casync/src/caencoder.c:3078,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 3
    argNames:
    - e
    - node
    - ret
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3087
      start: 3028
    functionDepth: 1
    functionLinenumber: 3028
    functionLinenumberEnd: 3087
    functionName: ca_encoder_node_path
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - realloc
    - strlen
    - ca_encoder_node_current_dirent
    - strcpy
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_encoder_node_path(CaEncoder *e, CaEncoderNode *node, char **ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3097,1
    - Dst: ca_encoder_node_path
      Src: /src/casync/src/caencoder.c:3101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3102
      start: 3089
    functionDepth: 2
    functionLinenumber: 3089
    functionLinenumberEnd: 3102
    functionName: ca_encoder_current_path
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 2
    functionsReached:
    - ca_encoder_node_path
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_path(CaEncoder *e, char **ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3112,1
    - Dst: ca_encoder_fixup_mode
      Src: /src/casync/src/caencoder.c:3116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - mode_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3118
      start: 3104
    functionDepth: 1
    functionLinenumber: 3104
    functionLinenumberEnd: 3118
    functionName: ca_encoder_current_mode
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 2
    functionsReached:
    - ca_encoder_fixup_mode
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_mode(CaEncoder *e, mode_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3128,1
    - Dst: S_ISLNK
      Src: /src/casync/src/caencoder.c:3132,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3140
      start: 3120
    functionDepth: 1
    functionLinenumber: 3120
    functionLinenumberEnd: 3140
    functionName: ca_encoder_current_target
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - S_ISLNK
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_target(CaEncoder *e, const char **ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3153,1
    - Dst: ca_encoder_fixup_mtime
      Src: /src/casync/src/caencoder.c:3157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3159
      start: 3142
    functionDepth: 2
    functionLinenumber: 3142
    functionLinenumberEnd: 3159
    functionName: ca_encoder_current_mtime
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_encoder_fixup_mtime
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_mtime(CaEncoder *e, uint64_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3169,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:3173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3178
      start: 3161
    functionDepth: 1
    functionLinenumber: 3161
    functionLinenumberEnd: 3178
    functionName: ca_encoder_current_size
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - S_ISREG
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_size(CaEncoder *e, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3192,1
    - Dst: ca_encoder_shift_uid
      Src: /src/casync/src/caencoder.c:3196,1
    - Dst: uid_is_valid
      Src: /src/casync/src/caencoder.c:3197,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - uid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3202
      start: 3180
    functionDepth: 2
    functionLinenumber: 3180
    functionLinenumberEnd: 3202
    functionName: ca_encoder_current_uid
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_encoder_shift_uid
    - ca_encoder_current_node
    - uid_is_valid
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_uid(CaEncoder *e, uid_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3216,1
    - Dst: ca_encoder_shift_gid
      Src: /src/casync/src/caencoder.c:3220,1
    - Dst: gid_is_valid
      Src: /src/casync/src/caencoder.c:3221,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - gid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3226
      start: 3204
    functionDepth: 3
    functionLinenumber: 3204
    functionLinenumberEnd: 3226
    functionName: ca_encoder_current_gid
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - gid_is_valid
    - ca_encoder_shift_gid
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_gid(CaEncoder *e, gid_t *ret)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3240,1
    - Dst: ca_encoder_node_read_user_group_names
      Src: /src/casync/src/caencoder.c:3244,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3256
      start: 3228
    functionDepth: 5
    functionLinenumber: 3228
    functionLinenumberEnd: 3256
    functionName: ca_encoder_current_user
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_encoder_node_read_user_group_names
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_user(CaEncoder *e, const char **ret)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3270,1
    - Dst: ca_encoder_node_read_user_group_names
      Src: /src/casync/src/caencoder.c:3274,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3286
      start: 3258
    functionDepth: 5
    functionLinenumber: 3258
    functionLinenumberEnd: 3286
    functionName: ca_encoder_current_group
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_encoder_node_read_user_group_names
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_group(CaEncoder *e, const char **ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3296,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:3300,1
    - Dst: S_ISCHR
      Src: /src/casync/src/caencoder.c:3300,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - dev_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3305
      start: 3288
    functionDepth: 1
    functionLinenumber: 3288
    functionLinenumberEnd: 3305
    functionName: ca_encoder_current_rdev
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - S_ISBLK
    - S_ISCHR
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_rdev(CaEncoder *e, dev_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3315,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:3319,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:3319,1
    - Dst: ca_feature_flags_to_chattr
      Src: /src/casync/src/caencoder.c:3325,1
    - Dst: ca_feature_flags_from_chattr
      Src: /src/casync/src/caencoder.c:3325,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - unsigned*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3327
      start: 3307
    functionDepth: 2
    functionLinenumber: 3307
    functionLinenumberEnd: 3327
    functionName: ca_encoder_current_chattr
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_feature_flags_from_chattr
    - S_ISDIR
    - S_ISREG
    - ca_encoder_current_node
    - ca_feature_flags_to_chattr
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_chattr(CaEncoder *e, unsigned *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3337,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:3341,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:3341,1
    - Dst: ca_feature_flags_to_fat_attrs
      Src: /src/casync/src/caencoder.c:3347,1
    - Dst: ca_feature_flags_from_fat_attrs
      Src: /src/casync/src/caencoder.c:3347,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3349
      start: 3329
    functionDepth: 2
    functionLinenumber: 3329
    functionLinenumberEnd: 3349
    functionName: ca_encoder_current_fat_attrs
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_feature_flags_to_fat_attrs
    - S_ISDIR
    - S_ISREG
    - ca_feature_flags_from_fat_attrs
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_fat_attrs(CaEncoder *e, uint32_t *ret)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3366,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3408,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 67
    argCount: 5
    argNames:
    - e
    - where
    - ret_name
    - ret_value
    - ret_size
    argTypes:
    - CaEncoder*
    - CaIterate
    - char**
    - void**
    - size_t*
    assertStmts:
    - condition: (false)
      pos:
        line_end: 3407
        line_start: 3407
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 3436
      start: 3351
    functionDepth: 1
    functionLinenumber: 3351
    functionLinenumberEnd: 3436
    functionName: ca_encoder_current_xattr
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - assert
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_xattr(CaEncoder *e, CaIterate where, const char
      **ret_name, const void **ret_value, size_t *ret_size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3446,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3455
      start: 3438
    functionDepth: 1
    functionLinenumber: 3438
    functionLinenumberEnd: 3455
    functionName: ca_encoder_current_quota_projid
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_quota_projid(CaEncoder *e, uint32_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3465,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:3469,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:3469,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3474
      start: 3457
    functionDepth: 1
    functionLinenumber: 3457
    functionLinenumberEnd: 3474
    functionName: ca_encoder_current_payload_offset
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - S_ISBLK
    - S_ISREG
    - ca_encoder_current_node
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_payload_offset(CaEncoder *e, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3486
      start: 3476
    functionDepth: 0
    functionLinenumber: 3476
    functionLinenumberEnd: 3486
    functionName: ca_encoder_current_archive_offset
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_archive_offset(CaEncoder *e, uint64_t *ret)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3500,1
    - Dst: ca_encoder_node_parent_of
      Src: /src/casync/src/caencoder.c:3512,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3517,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:3517,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:3517,1
    - Dst: ca_encoder_node_parent_of
      Src: /src/casync/src/caencoder.c:3523,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3528,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:3528,1
    - Dst: ca_encoder_current_child_node
      Src: /src/casync/src/caencoder.c:3535,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3543,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:3543,1
    - Dst: ca_encoder_node_path
      Src: /src/casync/src/caencoder.c:3553,1
    - Dst: ca_encoder_node_read_generation
      Src: /src/casync/src/caencoder.c:3557,1
    - Dst: ca_location_new
      Src: /src/casync/src/caencoder.c:3561,1
    - Dst: MAX
      Src: /src/casync/src/caencoder.c:3565,1
    - Dst: timespec_to_nsec
      Src: /src/casync/src/caencoder.c:3565,1
    - Dst: timespec_to_nsec
      Src: /src/casync/src/caencoder.c:3566,1
    - Dst: ca_name_table_ref
      Src: /src/casync/src/caencoder.c:3571,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 3
    argNames:
    - e
    - add
    - ret
    argTypes:
    - CaEncoder*
    - uint64_t
    - CaLocation**
    assertStmts:
    - condition: (S_ISREG(node->stat.st_mode) || S_ISBLK(node->stat.st_mode))
      pos:
        line_end: 3516
        line_start: 3516
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISDIR(node->stat.st_mode))
      pos:
        line_end: 3527
        line_start: 3527
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISDIR(node->stat.st_mode))
      pos:
        line_end: 3542
        line_start: 3542
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 3580
      start: 3488
    functionDepth: 2
    functionLinenumber: 3488
    functionLinenumberEnd: 3580
    functionName: ca_encoder_current_location
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_location_new
    - ca_encoder_node_read_generation
    - timespec_to_nsec
    - S_ISDIR
    - S_ISREG
    - ca_encoder_node_parent_of
    - ca_encoder_current_node
    - S_ISBLK
    - MAX
    - assert
    - ca_encoder_current_child_node
    - ca_name_table_ref
    - ca_encoder_node_path
    linkageType: ''
    returnType: int
    signature: int ca_encoder_current_location(CaEncoder *e, uint64_t add, CaLocation
      **ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3586,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:3588,1
    - Dst: ca_encoder_node_read_dirents
      Src: /src/casync/src/caencoder.c:3591,1
    - Dst: ca_name_table_unref
      Src: /src/casync/src/caencoder.c:3595,1
    - Dst: ca_encoder_node_current_dirent
      Src: /src/casync/src/caencoder.c:3597,1
    - Dst: streq
      Src: /src/casync/src/caencoder.c:3598,1
    - Dst: ca_encoder_node_child_of
      Src: /src/casync/src/caencoder.c:3601,1
    - Dst: bsearch
      Src: /src/casync/src/caencoder.c:3608,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3612,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3613,1
    - Dst: ca_encoder_open_child
      Src: /src/casync/src/caencoder.c:3619,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - e
    - n
    - name
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    - char*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 3585
        line_start: 3585
        source_file: /src/casync/src/caencoder.c
    - condition: (found >= n->dirents)
      pos:
        line_end: 3611
        line_start: 3611
        source_file: /src/casync/src/caencoder.c
    - condition: ((size_t) (found - n->dirents) < n->n_dirents)
      pos:
        line_end: 3612
        line_start: 3612
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 3620
      start: 3582
    functionDepth: 7
    functionLinenumber: 3582
    functionLinenumberEnd: 3620
    functionName: ca_encoder_node_seek_child
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_name_table_unref
    - S_ISDIR
    - ca_encoder_node_current_dirent
    - bsearch
    - ca_encoder_open_child
    - streq
    - assert
    - ca_encoder_node_child_of
    - ca_encoder_node_read_dirents
    linkageType: ''
    returnType: int
    signature: int ca_encoder_node_seek_child(CaEncoder *e, CaEncoderNode *n, const
      char *name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3626,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3627,1
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3631,1
    - Dst: strcspn
      Src: /src/casync/src/caencoder.c:3636,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:3642,1
    - Dst: memcpy
      Src: /src/casync/src/caencoder.c:3645,1
    - Dst: ca_encoder_node_seek_child
      Src: /src/casync/src/caencoder.c:3648,1
    - Dst: ca_encoder_enter_child
      Src: /src/casync/src/caencoder.c:3657,1
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3661,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3662,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - e
    - path
    argTypes:
    - CaEncoder*
    - char*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 3625
        line_start: 3625
        source_file: /src/casync/src/caencoder.c
    - condition: (path)
      pos:
        line_end: 3626
        line_start: 3626
        source_file: /src/casync/src/caencoder.c
    - condition: (node)
      pos:
        line_end: 3661
        line_start: 3661
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 3666
      start: 3622
    functionDepth: 8
    functionLinenumber: 3622
    functionLinenumberEnd: 3666
    functionName: ca_encoder_seek_path
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - strcspn
    - memcpy
    - ca_encoder_node_seek_child
    - S_ISDIR
    - ca_encoder_current_node
    - assert
    - ca_encoder_enter_child
    linkageType: ''
    returnType: int
    signature: int ca_encoder_seek_path(CaEncoder *e, const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3671,1
    - Dst: isempty
      Src: /src/casync/src/caencoder.c:3673,1
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3676,1
    - Dst: ca_name_table_unref
      Src: /src/casync/src/caencoder.c:3680,1
    - Dst: ca_encoder_seek_path
      Src: /src/casync/src/caencoder.c:3684,1
    - Dst: ca_encoder_enter_child
      Src: /src/casync/src/caencoder.c:3688,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - e
    - path
    argTypes:
    - CaEncoder*
    - char*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 3670
        line_start: 3670
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 3689
      start: 3668
    functionDepth: 9
    functionLinenumber: 3668
    functionLinenumberEnd: 3689
    functionName: ca_encoder_seek_path_and_enter
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_name_table_unref
    - ca_encoder_current_node
    - isempty
    - ca_encoder_seek_path
    - assert
    - ca_encoder_enter_child
    linkageType: ''
    returnType: int
    signature: int ca_encoder_seek_path_and_enter(CaEncoder *e, const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3692,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3693,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3694,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:3694,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3695,1
    - Dst: ca_name_table_unref
      Src: /src/casync/src/caencoder.c:3698,1
    - Dst: ca_name_table_ref
      Src: /src/casync/src/caencoder.c:3699,1
    - Dst: ca_encoder_node_parent_of
      Src: /src/casync/src/caencoder.c:3701,1
    - Dst: log_debug
      Src: /src/casync/src/caencoder.c:3707,1
    - Dst: log_debug
      Src: /src/casync/src/caencoder.c:3713,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - e
    - node
    - t
    argTypes:
    - CaEncoder*
    - CaEncoderNode*
    - CaNameTable*
    assertStmts:
    - condition: (e)
      pos:
        line_end: 3691
        line_start: 3691
        source_file: /src/casync/src/caencoder.c
    - condition: (node)
      pos:
        line_end: 3692
        line_start: 3692
        source_file: /src/casync/src/caencoder.c
    - condition: (t)
      pos:
        line_end: 3694
        line_start: 3694
        source_file: /src/casync/src/caencoder.c
    - condition: (S_ISDIR(node->stat.st_mode))
      pos:
        line_end: 3693
        line_start: 3693
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 3718
      start: 3691
    functionDepth: 1
    functionLinenumber: 3691
    functionLinenumberEnd: 3718
    functionName: ca_encoder_node_install_name_table
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 0
    functionsReached:
    - ca_name_table_unref
    - S_ISDIR
    - ca_encoder_node_parent_of
    - log_debug
    - assert
    - ca_name_table_ref
    linkageType: ''
    returnType: int
    signature: int ca_encoder_node_install_name_table(CaEncoder *e, CaEncoderNode
      *node, CaNameTable *t)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: CA_LOCATION_DESIGNATOR_VALID
      Src: /src/casync/src/caencoder.c:3730,1
    - Dst: ca_encoder_seek_path_and_enter
      Src: /src/casync/src/caencoder.c:3741,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caencoder.c:3743,1
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3745,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3746,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:3749,1
    - Dst: ca_encoder_node_parent_of
      Src: /src/casync/src/caencoder.c:3756,1
    - Dst: ca_encoder_node_install_name_table
      Src: /src/casync/src/caencoder.c:3761,1
    - Dst: ca_name_table_unref
      Src: /src/casync/src/caencoder.c:3767,1
    - Dst: ca_encoder_initialize_name_table
      Src: /src/casync/src/caencoder.c:3768,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caencoder.c:3772,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/caencoder.c:3775,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/caencoder.c:3778,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/caencoder.c:3784,1
    - Dst: ca_encoder_seek_path_and_enter
      Src: /src/casync/src/caencoder.c:3791,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caencoder.c:3793,1
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3795,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3796,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:3798,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:3798,1
    - Dst: ca_encoder_node_get_payload_size
      Src: /src/casync/src/caencoder.c:3801,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:3808,1
    - Dst: CA_ENCODER_AT_ROOT
      Src: /src/casync/src/caencoder.c:3812,1
    - Dst: ca_encoder_node_parent_of
      Src: /src/casync/src/caencoder.c:3818,1
    - Dst: ca_encoder_node_install_name_table
      Src: /src/casync/src/caencoder.c:3822,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caencoder.c:3827,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/caencoder.c:3830,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/caencoder.c:3834,1
    - Dst: ca_encoder_seek_path
      Src: /src/casync/src/caencoder.c:3842,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caencoder.c:3844,1
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3846,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3847,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:3849,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:3852,1
    - Dst: ca_encoder_node_install_name_table
      Src: /src/casync/src/caencoder.c:3857,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caencoder.c:3862,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/caencoder.c:3865,1
    - Dst: ca_encoder_seek_path_and_enter
      Src: /src/casync/src/caencoder.c:3871,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caencoder.c:3873,1
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3875,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3876,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:3878,1
    - Dst: ca_encoder_node_read_dirents
      Src: /src/casync/src/caencoder.c:3881,1
    - Dst: ca_encoder_enter_state
      Src: /src/casync/src/caencoder.c:3886,1
    - Dst: ca_encoder_node_install_name_table
      Src: /src/casync/src/caencoder.c:3891,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caencoder.c:3896,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/caencoder.c:3899,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 129
    argCount: 2
    argNames:
    - e
    - location
    argTypes:
    - CaEncoder*
    - CaLocation*
    assertStmts:
    - condition: (node)
      pos:
        line_end: 3745
        line_start: 3745
        source_file: /src/casync/src/caencoder.c
    - condition: (node)
      pos:
        line_end: 3846
        line_start: 3846
        source_file: /src/casync/src/caencoder.c
    - condition: (node)
      pos:
        line_end: 3795
        line_start: 3795
        source_file: /src/casync/src/caencoder.c
    - condition: (node)
      pos:
        line_end: 3875
        line_start: 3875
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 3908
      start: 3720
    functionDepth: 10
    functionLinenumber: 3720
    functionLinenumberEnd: 3908
    functionName: ca_encoder_seek_location
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_encoder_node_install_name_table
    - ca_encoder_node_parent_of
    - realloc_buffer_empty
    - log_debug_errno
    - ca_encoder_enter_state
    - S_ISDIR
    - CA_LOCATION_DESIGNATOR_VALID
    - S_ISBLK
    - assert
    - ca_name_table_unref
    - CA_ENCODER_AT_ROOT
    - S_ISREG
    - ca_encoder_seek_path_and_enter
    - ca_encoder_node_get_payload_size
    - ca_encoder_current_node
    - ca_encoder_initialize_name_table
    - ca_encoder_seek_path
    - ca_digest_reset
    - ca_encoder_node_read_dirents
    linkageType: ''
    returnType: int
    signature: int ca_encoder_seek_location(CaEncoder *e, CaLocation *location)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - e
    - u
    argTypes:
    - CaEncoder*
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3916
      start: 3910
    functionDepth: 0
    functionLinenumber: 3910
    functionLinenumberEnd: 3916
    functionName: ca_encoder_set_uid_shift
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_encoder_set_uid_shift(CaEncoder *e, uid_t u)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - e
    - u
    argTypes:
    - CaEncoder*
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3924
      start: 3918
    functionDepth: 0
    functionLinenumber: 3918
    functionLinenumberEnd: 3924
    functionName: ca_encoder_set_uid_range
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_encoder_set_uid_range(CaEncoder *e, uid_t u)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - e
    - b
    argTypes:
    - CaEncoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3932
      start: 3926
    functionDepth: 0
    functionLinenumber: 3926
    functionLinenumberEnd: 3932
    functionName: ca_encoder_enable_archive_digest
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_encoder_enable_archive_digest(CaEncoder *e, bool b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - e
    - b
    argTypes:
    - CaEncoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3940
      start: 3934
    functionDepth: 0
    functionLinenumber: 3934
    functionLinenumberEnd: 3940
    functionName: ca_encoder_enable_payload_digest
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_encoder_enable_payload_digest(CaEncoder *e, bool b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - e
    - b
    argTypes:
    - CaEncoder*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3948
      start: 3942
    functionDepth: 0
    functionLinenumber: 3942
    functionLinenumberEnd: 3948
    functionName: ca_encoder_enable_hardlink_digest
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_encoder_enable_hardlink_digest(CaEncoder *e, bool b)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_ensure_allocated
      Src: /src/casync/src/caencoder.c:3964,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/caencoder.c:3964,1
    - Dst: ca_digest_read
      Src: /src/casync/src/caencoder.c:3968,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:3972,1
    - Dst: ca_digest_get_size
      Src: /src/casync/src/caencoder.c:3972,1
    - Dst: memcpy
      Src: /src/casync/src/caencoder.c:3973,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - CaChunkID*
    assertStmts:
    - condition: (ca_digest_get_size(e->archive_digest) == sizeof(CaChunkID))
      pos:
        line_end: 3971
        line_start: 3971
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 3976
      start: 3950
    functionDepth: 4
    functionLinenumber: 3950
    functionLinenumberEnd: 3976
    functionName: ca_encoder_get_archive_digest
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_digest_get_size
    - memcpy
    - ca_digest_read
    - ca_digest_ensure_allocated
    - assert
    - ca_feature_flags_to_digest_type
    linkageType: ''
    returnType: int
    signature: int ca_encoder_get_archive_digest(CaEncoder *e, CaChunkID *ret)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:3995,1
    - Dst: S_ISREG
      Src: /src/casync/src/caencoder.c:3998,1
    - Dst: S_ISBLK
      Src: /src/casync/src/caencoder.c:3998,1
    - Dst: ca_digest_ensure_allocated
      Src: /src/casync/src/caencoder.c:4001,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/caencoder.c:4001,1
    - Dst: ca_digest_read
      Src: /src/casync/src/caencoder.c:4005,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:4009,1
    - Dst: ca_digest_get_size
      Src: /src/casync/src/caencoder.c:4009,1
    - Dst: memcpy
      Src: /src/casync/src/caencoder.c:4010,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - CaChunkID*
    assertStmts:
    - condition: (ca_digest_get_size(e->payload_digest) == sizeof(CaChunkID))
      pos:
        line_end: 4008
        line_start: 4008
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 4013
      start: 3978
    functionDepth: 4
    functionLinenumber: 3978
    functionLinenumberEnd: 4013
    functionName: ca_encoder_get_payload_digest
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_digest_get_size
    - memcpy
    - S_ISREG
    - ca_encoder_current_node
    - ca_digest_read
    - S_ISBLK
    - ca_digest_ensure_allocated
    - assert
    - ca_feature_flags_to_digest_type
    linkageType: ''
    returnType: int
    signature: int ca_encoder_get_payload_digest(CaEncoder *e, CaChunkID *ret)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_node
      Src: /src/casync/src/caencoder.c:4032,1
    - Dst: S_ISDIR
      Src: /src/casync/src/caencoder.c:4036,1
    - Dst: ca_digest_ensure_allocated
      Src: /src/casync/src/caencoder.c:4039,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/caencoder.c:4039,1
    - Dst: ca_digest_read
      Src: /src/casync/src/caencoder.c:4043,1
    - Dst: assert
      Src: /src/casync/src/caencoder.c:4047,1
    - Dst: ca_digest_get_size
      Src: /src/casync/src/caencoder.c:4047,1
    - Dst: memcpy
      Src: /src/casync/src/caencoder.c:4048,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - e
    - ret
    argTypes:
    - CaEncoder*
    - CaChunkID*
    assertStmts:
    - condition: (ca_digest_get_size(e->hardlink_digest) == sizeof(CaChunkID))
      pos:
        line_end: 4046
        line_start: 4046
        source_file: /src/casync/src/caencoder.c
    constantsTouched: []
    func_position:
      end: 4051
      start: 4015
    functionDepth: 4
    functionLinenumber: 4015
    functionLinenumberEnd: 4051
    functionName: ca_encoder_get_hardlink_digest
    functionSourceFile: /src/casync/src/caencoder.c
    functionUses: 1
    functionsReached:
    - ca_digest_get_size
    - memcpy
    - S_ISDIR
    - ca_encoder_current_node
    - ca_digest_read
    - ca_digest_ensure_allocated
    - assert
    - ca_feature_flags_to_digest_type
    linkageType: ''
    returnType: int
    signature: int ca_encoder_get_hardlink_digest(CaEncoder *e, CaChunkID *ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/caseed.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 74
    functionName: ca_seed_new
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 2
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaSeed
    signature: CaSeed *ca_seed_new(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caseed.c:77,1
    - Dst: rm_rf
      Src: /src/casync/src/caseed.c:83,1
    - Dst: mfree
      Src: /src/casync/src/caseed.c:84,1
    - Dst: safe_close
      Src: /src/casync/src/caseed.c:85,1
    - Dst: rm_rf_children
      Src: /src/casync/src/caseed.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSeed*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 76
        line_start: 76
        source_file: /src/casync/src/caseed.c
    constantsTouched: []
    func_position:
      end: 90
      start: 76
    functionDepth: 3
    functionLinenumber: 76
    functionLinenumberEnd: 90
    functionName: ca_seed_remove_and_close_cache
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 0
    functionsReached:
    - mfree
    - safe_close
    - rm_rf
    - assert
    - rm_rf_children
    linkageType: ''
    returnType: void
    signature: void ca_seed_remove_and_close_cache(CaSeed *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_file_root_invalidate
      Src: /src/casync/src/caseed.c:96,1
    - Dst: ca_seed_remove_and_close_cache
      Src: /src/casync/src/caseed.c:98,1
    - Dst: ca_encoder_unref
      Src: /src/casync/src/caseed.c:100,1
    - Dst: safe_close
      Src: /src/casync/src/caseed.c:102,1
    - Dst: safe_close
      Src: /src/casync/src/caseed.c:103,1
    - Dst: free
      Src: /src/casync/src/caseed.c:104,1
    - Dst: ca_digest_free
      Src: /src/casync/src/caseed.c:106,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/caseed.c:108,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caseed.c:109,1
    - Dst: ca_file_root_unref
      Src: /src/casync/src/caseed.c:111,1
    - Dst: mfree
      Src: /src/casync/src/caseed.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSeed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 92
    functionDepth: 5
    functionLinenumber: 92
    functionLinenumberEnd: 114
    functionName: ca_seed_unref
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 3
    functionsReached:
    - mfree
    - safe_close
    - ca_encoder_unref
    - ca_file_root_invalidate
    - ca_file_root_unref
    - ca_location_unref
    - ca_seed_remove_and_close_cache
    - ca_digest_free
    - realloc_buffer_free
    - free
    linkageType: ''
    returnType: CaSeed
    signature: CaSeed *ca_seed_unref(CaSeed *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - s
    - fd
    argTypes:
    - CaSeed*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 127
    functionName: ca_seed_set_base_fd
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_seed_set_base_fd(CaSeed *s, int fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/casync/src/caseed.c:138,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - CaSeed*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 143
    functionName: ca_seed_set_base_path
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached:
    - open
    linkageType: ''
    returnType: int
    signature: int ca_seed_set_base_path(CaSeed *s, const char *path)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - s
    - fd
    argTypes:
    - CaSeed*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 158
    functionName: ca_seed_set_cache_fd
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_seed_set_cache_fd(CaSeed *s, int fd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/casync/src/caseed.c:171,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - CaSeed*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 176
    functionName: ca_seed_set_cache_path
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 0
    functionsReached:
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_seed_set_cache_path(CaSeed *s, const char *path)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_new
      Src: /src/casync/src/caseed.c:188,1
    - Dst: ca_encoder_set_feature_flags
      Src: /src/casync/src/caseed.c:192,1
    - Dst: ca_encoder_set_base_fd
      Src: /src/casync/src/caseed.c:196,1
    - Dst: ca_encoder_enable_hardlink_digest
      Src: /src/casync/src/caseed.c:200,1
    - Dst: var_tmp_dir
      Src: /src/casync/src/caseed.c:211,1
    - Dst: asprintf
      Src: /src/casync/src/caseed.c:215,1
    - Dst: random_u64
      Src: /src/casync/src/caseed.c:215,1
    - Dst: mkdir
      Src: /src/casync/src/caseed.c:221,1
    - Dst: open
      Src: /src/casync/src/caseed.c:223,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSeed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 178
    functionDepth: 4
    functionLinenumber: 178
    functionLinenumberEnd: 229
    functionName: ca_seed_open
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 0
    functionsReached:
    - ca_encoder_set_feature_flags
    - ca_encoder_enable_hardlink_digest
    - random_u64
    - var_tmp_dir
    - asprintf
    - mkdir
    - ca_encoder_set_base_fd
    - ca_encoder_new
    - open
    linkageType: ''
    returnType: int
    signature: int ca_seed_open(CaSeed *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_new
      Src: /src/casync/src/caseed.c:242,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/caseed.c:242,1
    - Dst: ca_chunk_id_make
      Src: /src/casync/src/caseed.c:247,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - s
    - p
    - l
    - ret
    argTypes:
    - CaSeed*
    - void*
    - size_t
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 231
    functionDepth: 3
    functionLinenumber: 231
    functionLinenumberEnd: 248
    functionName: ca_seed_make_chunk_id
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 0
    functionsReached:
    - ca_digest_new
    - ca_feature_flags_to_digest_type
    - ca_chunk_id_make
    linkageType: ''
    returnType: int
    signature: int ca_seed_make_chunk_id(CaSeed *s, const void *p, size_t l, CaChunkID
      *ret)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caseed.c:256,1
    - Dst: assert
      Src: /src/casync/src/caseed.c:257,1
    - Dst: assert
      Src: /src/casync/src/caseed.c:258,1
    - Dst: assert
      Src: /src/casync/src/caseed.c:259,1
    - Dst: ca_location_patch_size
      Src: /src/casync/src/caseed.c:261,1
    - Dst: ca_location_format_full
      Src: /src/casync/src/caseed.c:265,1
    - Dst: ca_seed_make_chunk_id
      Src: /src/casync/src/caseed.c:269,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/caseed.c:273,1
    - Dst: strndupa
      Src: /src/casync/src/caseed.c:276,1
    - Dst: strjoina
      Src: /src/casync/src/caseed.c:277,1
    - Dst: mkdirat
      Src: /src/casync/src/caseed.c:279,1
    - Dst: symlinkat
      Src: /src/casync/src/caseed.c:281,1
    - Dst: _cleanup_
      Src: /src/casync/src/caseed.c:282,1
    - Dst: _cleanup_
      Src: /src/casync/src/caseed.c:283,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caseed.c:291,1
    - Dst: tempfn_random
      Src: /src/casync/src/caseed.c:293,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caseed.c:295,1
    - Dst: openat
      Src: /src/casync/src/caseed.c:297,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caseed.c:299,1
    - Dst: strlen
      Src: /src/casync/src/caseed.c:301,1
    - Dst: write
      Src: /src/casync/src/caseed.c:302,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caseed.c:304,1
    - Dst: log_debug
      Src: /src/casync/src/caseed.c:306,1
    - Dst: renameat
      Src: /src/casync/src/caseed.c:310,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caseed.c:311,1
    - Dst: mfree
      Src: /src/casync/src/caseed.c:313,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 4
    argNames:
    - s
    - location
    - data
    - l
    argTypes:
    - CaSeed*
    - CaLocation*
    - void*
    - size_t
    assertStmts:
    - condition: (data)
      pos:
        line_end: 257
        line_start: 257
        source_file: /src/casync/src/caseed.c
    - condition: (s)
      pos:
        line_end: 255
        line_start: 255
        source_file: /src/casync/src/caseed.c
    - condition: (l > 0)
      pos:
        line_end: 258
        line_start: 258
        source_file: /src/casync/src/caseed.c
    - condition: (location)
      pos:
        line_end: 256
        line_start: 256
        source_file: /src/casync/src/caseed.c
    constantsTouched: []
    func_position:
      end: 317
      start: 250
    functionDepth: 4
    functionLinenumber: 250
    functionLinenumberEnd: 317
    functionName: ca_seed_write_cache_entry
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 0
    functionsReached:
    - strjoina
    - mfree
    - symlinkat
    - strlen
    - tempfn_random
    - openat
    - ca_chunk_id_format
    - log_debug
    - ca_location_patch_size
    - ca_location_format_full
    - ca_seed_make_chunk_id
    - mkdirat
    - strndupa
    - renameat
    - write
    - assert
    - log_debug_errno
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_seed_write_cache_entry(CaSeed *s, CaLocation *location, const
      void *data, size_t l)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caseed.c:325,1
    - Dst: ca_encoder_get_data
      Src: /src/casync/src/caseed.c:327,1
    - Dst: ca_encoder_current_location
      Src: /src/casync/src/caseed.c:341,1
    - Dst: ca_chunker_scan
      Src: /src/casync/src/caseed.c:346,1
    - Dst: realloc_buffer_append
      Src: /src/casync/src/caseed.c:348,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caseed.c:354,1
    - Dst: realloc_buffer_append
      Src: /src/casync/src/caseed.c:358,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caseed.c:361,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caseed.c:362,1
    - Dst: ca_seed_write_cache_entry
      Src: /src/casync/src/caseed.c:365,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caseed.c:369,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caseed.c:370,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSeed*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 324
        line_start: 324
        source_file: /src/casync/src/caseed.c
    constantsTouched: []
    func_position:
      end: 379
      start: 319
    functionDepth: 8
    functionLinenumber: 319
    functionLinenumberEnd: 379
    functionName: ca_seed_cache_chunks
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_data
    - ca_encoder_get_data
    - ca_encoder_current_location
    - ca_chunker_scan
    - realloc_buffer_empty
    - realloc_buffer_append
    - ca_seed_write_cache_entry
    - ca_location_unref
    - assert
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_seed_cache_chunks(CaSeed *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caseed.c:384,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caseed.c:389,1
    - Dst: ca_seed_write_cache_entry
      Src: /src/casync/src/caseed.c:395,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caseed.c:395,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caseed.c:395,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caseed.c:399,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caseed.c:400,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSeed*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 383
        line_start: 383
        source_file: /src/casync/src/caseed.c
    constantsTouched: []
    func_position:
      end: 403
      start: 381
    functionDepth: 5
    functionLinenumber: 381
    functionLinenumberEnd: 403
    functionName: ca_seed_cache_final_chunk
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_data
    - realloc_buffer_empty
    - ca_seed_write_cache_entry
    - ca_location_unref
    - assert
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_seed_cache_final_chunk(CaSeed *s)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caseed.c:414,1
    - Dst: ca_encoder_current_mode
      Src: /src/casync/src/caseed.c:421,1
    - Dst: S_ISREG
      Src: /src/casync/src/caseed.c:424,1
    - Dst: ca_encoder_get_hardlink_digest
      Src: /src/casync/src/caseed.c:427,1
    - Dst: ca_encoder_current_path
      Src: /src/casync/src/caseed.c:431,1
    - Dst: ca_location_new
      Src: /src/casync/src/caseed.c:435,1
    - Dst: free
      Src: /src/casync/src/caseed.c:436,1
    - Dst: ca_location_format
      Src: /src/casync/src/caseed.c:440,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/caseed.c:446,1
    - Dst: strndupa
      Src: /src/casync/src/caseed.c:451,1
    - Dst: strjoina
      Src: /src/casync/src/caseed.c:452,1
    - Dst: mkdirat
      Src: /src/casync/src/caseed.c:454,1
    - Dst: symlinkat
      Src: /src/casync/src/caseed.c:456,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caseed.c:464,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSeed*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 413
        line_start: 413
        source_file: /src/casync/src/caseed.c
    constantsTouched: []
    func_position:
      end: 466
      start: 405
    functionDepth: 5
    functionLinenumber: 405
    functionLinenumberEnd: 466
    functionName: ca_seed_cache_hardlink
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 0
    functionsReached:
    - ca_location_new
    - strjoina
    - symlinkat
    - ca_location_format
    - S_ISREG
    - ca_encoder_current_mode
    - ca_encoder_current_path
    - ca_chunk_id_format
    - mkdirat
    - strndupa
    - ca_location_unref
    - ca_encoder_get_hardlink_digest
    - assert
    - free
    linkageType: ''
    returnType: int
    signature: int ca_seed_cache_hardlink(CaSeed *s)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: now
      Src: /src/casync/src/caseed.c:479,1
    - Dst: now
      Src: /src/casync/src/caseed.c:486,1
    - Dst: ca_seed_open
      Src: /src/casync/src/caseed.c:488,1
    - Dst: ca_encoder_step
      Src: /src/casync/src/caseed.c:495,1
    - Dst: ca_seed_cache_final_chunk
      Src: /src/casync/src/caseed.c:503,1
    - Dst: now
      Src: /src/casync/src/caseed.c:508,1
    - Dst: ca_seed_cache_chunks
      Src: /src/casync/src/caseed.c:518,1
    - Dst: ca_seed_cache_hardlink
      Src: /src/casync/src/caseed.c:523,1
    - Dst: assert
      Src: /src/casync/src/caseed.c:532,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSeed*
    assertStmts:
    - condition: (false)
      pos:
        line_end: 531
        line_start: 531
        source_file: /src/casync/src/caseed.c
    constantsTouched: []
    func_position:
      end: 535
      start: 468
    functionDepth: 9
    functionLinenumber: 468
    functionLinenumberEnd: 535
    functionName: ca_seed_step
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached:
    - ca_seed_cache_chunks
    - ca_seed_open
    - ca_encoder_step
    - now
    - ca_seed_cache_hardlink
    - ca_seed_cache_final_chunk
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_seed_step(CaSeed *s)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/caseed.c:565,1
    - Dst: strndupa
      Src: /src/casync/src/caseed.c:568,1
    - Dst: strjoina
      Src: /src/casync/src/caseed.c:569,1
    - Dst: readlinkat_malloc
      Src: /src/casync/src/caseed.c:571,1
    - Dst: _cleanup_
      Src: /src/casync/src/caseed.c:573,1
    - Dst: openat
      Src: /src/casync/src/caseed.c:576,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caseed.c:578,1
    - Dst: realloc_buffer_read_full
      Src: /src/casync/src/caseed.c:580,1
    - Dst: realloc_buffer_memchr
      Src: /src/casync/src/caseed.c:585,1
    - Dst: realloc_buffer_append_byte
      Src: /src/casync/src/caseed.c:591,1
    - Dst: realloc_buffer_steal
      Src: /src/casync/src/caseed.c:594,1
    - Dst: ca_location_parse
      Src: /src/casync/src/caseed.c:600,1
    - Dst: free
      Src: /src/casync/src/caseed.c:601,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caseed.c:603,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caseed.c:609,1
    - Dst: log_debug
      Src: /src/casync/src/caseed.c:610,1
    - Dst: ca_encoder_seek_location
      Src: /src/casync/src/caseed.c:615,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caseed.c:616,1
    - Dst: log_debug_errno
      Src: /src/casync/src/caseed.c:620,1
    - Dst: realloc_buffer_acquire
      Src: /src/casync/src/caseed.c:622,1
    - Dst: ca_seed_get_file_root
      Src: /src/casync/src/caseed.c:627,1
    - Dst: ca_origin_new
      Src: /src/casync/src/caseed.c:631,1
    - Dst: ca_encoder_get_data
      Src: /src/casync/src/caseed.c:651,1
    - Dst: MIN
      Src: /src/casync/src/caseed.c:657,1
    - Dst: memcpy
      Src: /src/casync/src/caseed.c:658,1
    - Dst: ca_encoder_current_location
      Src: /src/casync/src/caseed.c:662,1
    - Dst: ca_location_patch_size
      Src: /src/casync/src/caseed.c:666,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caseed.c:668,1
    - Dst: ca_location_patch_root
      Src: /src/casync/src/caseed.c:672,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caseed.c:674,1
    - Dst: ca_origin_put
      Src: /src/casync/src/caseed.c:678,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caseed.c:679,1
    - Dst: ca_seed_make_chunk_id
      Src: /src/casync/src/caseed.c:687,1
    - Dst: ca_chunk_id_equal
      Src: /src/casync/src/caseed.c:691,1
    - Dst: assert
      Src: /src/casync/src/caseed.c:717,1
    - Dst: ca_encoder_step
      Src: /src/casync/src/caseed.c:720,1
    - Dst: ca_origin_unref
      Src: /src/casync/src/caseed.c:728,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 140
    argCount: 5
    argNames:
    - s
    - chunk_id
    - ret
    - ret_size
    - ret_origin
    argTypes:
    - CaSeed*
    - CaChunkID*
    - void**
    - size_t*
    - CaOrigin**
    assertStmts:
    - condition: (false)
      pos:
        line_end: 716
        line_start: 716
        source_file: /src/casync/src/caseed.c
    constantsTouched: []
    func_position:
      end: 730
      start: 537
    functionDepth: 11
    functionLinenumber: 537
    functionLinenumberEnd: 730
    functionName: ca_seed_get
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached:
    - ca_encoder_get_data
    - ca_encoder_step
    - ca_chunk_id_format
    - realloc_buffer_read_full
    - log_debug
    - realloc_buffer_acquire
    - ca_origin_unref
    - ca_seed_get_file_root
    - log_debug_errno
    - MIN
    - ca_location_parse
    - realloc_buffer_memchr
    - _cleanup_
    - memcpy
    - ca_encoder_current_location
    - realloc_buffer_steal
    - readlinkat_malloc
    - ca_seed_make_chunk_id
    - ca_location_patch_root
    - assert
    - strjoina
    - ca_encoder_seek_location
    - ca_origin_new
    - strndupa
    - ca_location_unref
    - realloc_buffer_append_byte
    - ca_chunk_id_equal
    - openat
    - ca_location_patch_size
    - ca_origin_put
    - free
    linkageType: ''
    returnType: int
    signature: "int ca_seed_get(CaSeed *s,\n                const CaChunkID *chunk_id,\n
      \               const void **ret,\n                size_t *ret_size,\n                CaOrigin
      **ret_origin)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/caseed.c:745,1
    - Dst: strndupa
      Src: /src/casync/src/caseed.c:748,1
    - Dst: strjoina
      Src: /src/casync/src/caseed.c:749,1
    - Dst: faccessat
      Src: /src/casync/src/caseed.c:751,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - s
    - chunk_id
    argTypes:
    - CaSeed*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 759
    functionName: ca_seed_has
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached:
    - strjoina
    - strndupa
    - ca_chunk_id_format
    - faccessat
    linkageType: ''
    returnType: int
    signature: int ca_seed_has(CaSeed *s, const CaChunkID *chunk_id)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/caseed.c:783,1
    - Dst: strndupa
      Src: /src/casync/src/caseed.c:786,1
    - Dst: strjoina
      Src: /src/casync/src/caseed.c:787,1
    - Dst: readlinkat_malloc
      Src: /src/casync/src/caseed.c:789,1
    - Dst: ca_location_parse
      Src: /src/casync/src/caseed.c:793,1
    - Dst: free
      Src: /src/casync/src/caseed.c:794,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caseed.c:811,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 3
    argNames:
    - s
    - id
    - ret
    argTypes:
    - CaSeed*
    - CaChunkID*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 761
    functionDepth: 1
    functionLinenumber: 761
    functionLinenumberEnd: 813
    functionName: ca_seed_get_hardlink_target
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached:
    - strjoina
    - free
    - ca_chunk_id_format
    - readlinkat_malloc
    - strndupa
    - ca_location_unref
    - ca_location_parse
    linkageType: ''
    returnType: int
    signature: "int ca_seed_get_hardlink_target(\n                CaSeed *s,\n                const
      CaChunkID *id,\n                char **ret)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_path
      Src: /src/casync/src/caseed.c:824,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - seed
    - ret
    argTypes:
    - CaSeed*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 815
    functionDepth: 3
    functionLinenumber: 815
    functionLinenumberEnd: 825
    functionName: ca_seed_current_path
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached:
    - ca_encoder_current_path
    linkageType: ''
    returnType: int
    signature: int ca_seed_current_path(CaSeed *seed, char **ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_current_mode
      Src: /src/casync/src/caseed.c:836,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - seed
    - ret
    argTypes:
    - CaSeed*
    - mode_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 827
    functionDepth: 2
    functionLinenumber: 827
    functionLinenumberEnd: 837
    functionName: ca_seed_current_mode
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached:
    - ca_encoder_current_mode
    linkageType: ''
    returnType: int
    signature: int ca_seed_current_mode(CaSeed *seed, mode_t *ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_feature_flags_normalize
      Src: /src/casync/src/caseed.c:843,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - s
    - flags
    argTypes:
    - CaSeed*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 839
    functionDepth: 1
    functionLinenumber: 839
    functionLinenumberEnd: 844
    functionName: ca_seed_set_feature_flags
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached:
    - ca_feature_flags_normalize
    linkageType: ''
    returnType: int
    signature: int ca_seed_set_feature_flags(CaSeed *s, uint64_t flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunker_set_size
      Src: /src/casync/src/caseed.c:850,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - s
    - cmin
    - cavg
    - cmax
    argTypes:
    - CaSeed*
    - size_t
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 846
    functionDepth: 1
    functionLinenumber: 846
    functionLinenumberEnd: 853
    functionName: ca_seed_set_chunk_size
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached:
    - ca_chunker_set_size
    linkageType: ''
    returnType: int
    signature: int ca_seed_set_chunk_size(CaSeed *s, size_t cmin, size_t cavg, size_t
      cmax)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_get_base_fd
      Src: /src/casync/src/caseed.c:869,1
    - Dst: ca_file_root_new
      Src: /src/casync/src/caseed.c:875,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSeed*
    - CaFileRoot**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 855
    functionDepth: 2
    functionLinenumber: 855
    functionLinenumberEnd: 882
    functionName: ca_seed_get_file_root
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 2
    functionsReached:
    - ca_encoder_get_base_fd
    - ca_file_root_new
    linkageType: ''
    returnType: int
    signature: int ca_seed_get_file_root(CaSeed *s, CaFileRoot **ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_encoder_enable_hardlink_digest
      Src: /src/casync/src/caseed.c:894,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - s
    - b
    argTypes:
    - CaSeed*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 884
    functionDepth: 1
    functionLinenumber: 884
    functionLinenumberEnd: 902
    functionName: ca_seed_set_hardlink
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached:
    - ca_encoder_enable_hardlink_digest
    linkageType: ''
    returnType: int
    signature: int ca_seed_set_hardlink(CaSeed *s, bool b)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - s
    - b
    argTypes:
    - CaSeed*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 904
    functionDepth: 0
    functionLinenumber: 904
    functionLinenumberEnd: 914
    functionName: ca_seed_set_chunks
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_seed_set_chunks(CaSeed *s, bool b)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSeed*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 916
    functionDepth: 0
    functionLinenumber: 916
    functionLinenumberEnd: 927
    functionName: ca_seed_get_requests
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_seed_get_requests(CaSeed *s, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSeed*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 940
    functionName: ca_seed_get_request_bytes
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_seed_get_request_bytes(CaSeed *s, uint64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - s
    - ret
    argTypes:
    - CaSeed*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 942
    functionDepth: 0
    functionLinenumber: 942
    functionLinenumberEnd: 958
    functionName: ca_seed_get_seeding_time_nsec
    functionSourceFile: /src/casync/src/caseed.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_seed_get_seeding_time_nsec(CaSeed *s, uint64_t *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/quota-projid.c:12,1
    - Dst: assert
      Src: /src/casync/src/quota-projid.c:13,1
    - Dst: ioctl
      Src: /src/casync/src/quota-projid.c:15,1
    - Dst: ERRNO_IS_UNSUPPORTED
      Src: /src/casync/src/quota-projid.c:17,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - fd
    - ret
    argTypes:
    - int
    - uint32_t*
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/casync/src/quota-projid.c
    - condition: (ret)
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/casync/src/quota-projid.c
    constantsTouched: []
    func_position:
      end: 27
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 27
    functionName: read_quota_projid
    functionSourceFile: /src/casync/src/quota-projid.c
    functionUses: 2
    functionsReached:
    - assert
    - ioctl
    - ERRNO_IS_UNSUPPORTED
    linkageType: ''
    returnType: int
    signature: int read_quota_projid(int fd, uint32_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/quota-projid.c:32,1
    - Dst: ioctl
      Src: /src/casync/src/quota-projid.c:34,1
    - Dst: ERRNO_IS_UNSUPPORTED
      Src: /src/casync/src/quota-projid.c:38,1
    - Dst: ioctl
      Src: /src/casync/src/quota-projid.c:49,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - fd
    - id
    argTypes:
    - int
    - uint32_t
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 31
        line_start: 31
        source_file: /src/casync/src/quota-projid.c
    constantsTouched: []
    func_position:
      end: 53
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 53
    functionName: write_quota_projid
    functionSourceFile: /src/casync/src/quota-projid.c
    functionUses: 1
    functionsReached:
    - assert
    - ioctl
    - ERRNO_IS_UNSUPPORTED
    linkageType: ''
    returnType: int
    signature: int write_quota_projid(int fd, uint32_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: is_main_thread
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_main_thread()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 189
    functionName: indirect_storage
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct _packed_
    signature: struct _packed_ indirect_storage
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - entry_t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 200
    functionName: DIRECT_BUCKETS
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DIRECT_BUCKETS(entry_t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: n_buckets
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned n_buckets(HashmapBase *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 288
    functionName: n_entries
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned n_entries(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 295
    functionName: n_entries_inc
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void n_entries_inc(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 302
    functionName: n_entries_dec
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void n_entries_dec(HashmapBase *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: storage_ptr
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *storage_ptr(HashmapBase *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: hash_key
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *hash_key(HashmapBase *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: siphash24_init
      Src: /src/casync/src/hashmap.c:318,1
    - Dst: hash_key
      Src: /src/casync/src/hashmap.c:318,1
    - Dst: HashmapBase*::hash_ops::hash
      Src: /src/casync/src/hashmap.c:320,1
    - Dst: siphash24_finalize
      Src: /src/casync/src/hashmap.c:322,1
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - h
    - p
    argTypes:
    - HashmapBase*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 325
    functionName: base_bucket_hash
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - siphash24_finalize
    - HashmapBase*::hash_ops::hash
    - siphash24_init
    - n_buckets
    - hash_key
    linkageType: ''
    returnType: unsigned
    signature: unsigned base_bucket_hash(HashmapBase *h, const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - h
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 327
    functionName: bucket_hash
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bucket_hash(h, p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: random_bytes
      Src: /src/casync/src/hashmap.c:340,1
    - Dst: memcpy
      Src: /src/casync/src/hashmap.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - hash_key
    - reuse_is_ok
    argTypes:
    - uint8_t[]
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 345
    functionName: get_hash_key
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - memcpy
    - random_bytes
    linkageType: ''
    returnType: void
    signature: void get_hash_key(uint8_t hash_key[HASH_KEY_SIZE], bool reuse_is_ok)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: storage_ptr
      Src: /src/casync/src/hashmap.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - idx
    argTypes:
    - HashmapBase*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 350
    functionName: bucket_at
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - storage_ptr
    linkageType: ''
    returnType: struct hashmap_base_entry
    signature: struct hashmap_base_entry *bucket_at(HashmapBase *h, unsigned idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:353,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - idx
    argTypes:
    - Hashmap*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 354
    functionName: plain_bucket_at
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - bucket_at
    linkageType: ''
    returnType: struct plain_hashmap_entry
    signature: struct plain_hashmap_entry *plain_bucket_at(Hashmap *h, unsigned idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:357,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - idx
    argTypes:
    - OrderedHashmap*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 358
    functionName: ordered_bucket_at
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - bucket_at
    linkageType: ''
    returnType: struct ordered_hashmap_entry
    signature: struct ordered_hashmap_entry *ordered_bucket_at(OrderedHashmap *h,
      unsigned idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:361,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - idx
    argTypes:
    - Set*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 362
    functionName: set_bucket_at
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - bucket_at
    linkageType: ''
    returnType: struct set_entry
    signature: struct set_entry *set_bucket_at(Set *h, unsigned idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - swap
    - idx
    argTypes:
    - struct swap_entries*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 366
    functionName: bucket_at_swap
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct ordered_hashmap_entry
    signature: struct ordered_hashmap_entry *bucket_at_swap(struct swap_entries *swap,
      unsigned idx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:373,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:376,1
    - Dst: assert_not_reached
      Src: /src/casync/src/hashmap.c:378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - h
    - swap
    - idx
    argTypes:
    - HashmapBase*
    - struct swap_entries*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 379
    functionName: bucket_at_virtual
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - bucket_at_swap
    - bucket_at
    - assert_not_reached
    linkageType: ''
    returnType: struct hashmap_base_entry
    signature: "struct hashmap_base_entry *bucket_at_virtual(HashmapBase *h, struct
      swap_entries *swap,\n                                                    unsigned
      idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: storage_ptr
      Src: /src/casync/src/hashmap.c:383,1
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 384
    functionName: dib_raw_ptr
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - n_buckets
    - storage_ptr
    linkageType: ''
    returnType: dib_raw_t
    signature: dib_raw_t *dib_raw_ptr(HashmapBase *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - h
    - idx
    - from
    argTypes:
    - HashmapBase*
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 389
    functionName: bucket_distance
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - n_buckets
    linkageType: ''
    returnType: unsigned
    signature: unsigned bucket_distance(HashmapBase *h, unsigned idx, unsigned from)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _likely_
      Src: /src/casync/src/hashmap.c:397,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:410,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:410,1
    - Dst: bucket_distance
      Src: /src/casync/src/hashmap.c:411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - h
    - idx
    - raw_dib
    argTypes:
    - HashmapBase*
    - unsigned
    - dib_raw_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 391
    functionDepth: 2
    functionLinenumber: 391
    functionLinenumberEnd: 412
    functionName: bucket_calculate_dib
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - bucket_distance
    - bucket_hash
    - bucket_at
    - _likely_
    linkageType: ''
    returnType: unsigned
    signature: unsigned bucket_calculate_dib(HashmapBase *h, unsigned idx, dib_raw_t
      raw_dib)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dib_raw_ptr
      Src: /src/casync/src/hashmap.c:415,1
    - Dst: MIN
      Src: /src/casync/src/hashmap.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - h
    - idx
    - dib
    argTypes:
    - HashmapBase*
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 414
    functionDepth: 2
    functionLinenumber: 414
    functionLinenumberEnd: 416
    functionName: bucket_set_dib
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - MIN
    - dib_raw_ptr
    linkageType: ''
    returnType: void
    signature: void bucket_set_dib(HashmapBase *h, unsigned idx, unsigned dib)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dib_raw_ptr
      Src: /src/casync/src/hashmap.c:421,1
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:423,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - h
    - idx
    argTypes:
    - HashmapBase*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 418
    functionDepth: 2
    functionLinenumber: 418
    functionLinenumberEnd: 428
    functionName: skip_free_buckets
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - n_buckets
    - dib_raw_ptr
    linkageType: ''
    returnType: unsigned
    signature: unsigned skip_free_buckets(HashmapBase *h, unsigned idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memzero
      Src: /src/casync/src/hashmap.c:431,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:431,1
    - Dst: bucket_set_dib
      Src: /src/casync/src/hashmap.c:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - h
    - idx
    argTypes:
    - HashmapBase*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 430
    functionDepth: 3
    functionLinenumber: 430
    functionLinenumberEnd: 433
    functionName: bucket_mark_free
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - bucket_set_dib
    - memzero
    - bucket_at
    linkageType: ''
    returnType: void
    signature: void bucket_mark_free(HashmapBase *h, unsigned idx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:439,1
    - Dst: bucket_at_virtual
      Src: /src/casync/src/hashmap.c:441,1
    - Dst: bucket_at_virtual
      Src: /src/casync/src/hashmap.c:442,1
    - Dst: memcpy
      Src: /src/casync/src/hashmap.c:444,1
    - Dst: bucket_at_virtual
      Src: /src/casync/src/hashmap.c:454,1
    - Dst: bucket_at_virtual
      Src: /src/casync/src/hashmap.c:460,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - h
    - swap
    - from
    - to
    argTypes:
    - HashmapBase*
    - struct swap_entries*
    - unsigned
    - unsigned
    assertStmts:
    - condition: (from != to)
      pos:
        line_end: 438
        line_start: 438
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 469
      start: 435
    functionDepth: 3
    functionLinenumber: 435
    functionLinenumberEnd: 469
    functionName: bucket_move_entry
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - memcpy
    - assert
    - bucket_at_virtual
    linkageType: ''
    returnType: void
    signature: "void bucket_move_entry(HashmapBase *h, struct swap_entries *swap,\n
      \                             unsigned from, unsigned to)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - idx
    argTypes:
    - HashmapBase*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 473
    functionName: next_idx
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - n_buckets
    linkageType: ''
    returnType: unsigned
    signature: unsigned next_idx(HashmapBase *h, unsigned idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:476,1
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - idx
    argTypes:
    - HashmapBase*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 477
    functionName: prev_idx
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - n_buckets
    linkageType: ''
    returnType: unsigned
    signature: unsigned prev_idx(HashmapBase *h, unsigned idx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert_not_reached
      Src: /src/casync/src/hashmap.c:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - h
    - e
    argTypes:
    - HashmapBase*
    - struct hashmap_base_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 492
    functionName: entry_value
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - assert_not_reached
    linkageType: ''
    returnType: void
    signature: void *entry_value(HashmapBase *h, struct hashmap_base_entry *e)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dib_raw_ptr
      Src: /src/casync/src/hashmap.c:498,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:499,1
    - Dst: next_idx
      Src: /src/casync/src/hashmap.c:508,1
    - Dst: next_idx
      Src: /src/casync/src/hashmap.c:508,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:516,1
    - Dst: ordered_bucket_at
      Src: /src/casync/src/hashmap.c:521,1
    - Dst: ordered_bucket_at
      Src: /src/casync/src/hashmap.c:524,1
    - Dst: ordered_bucket_at
      Src: /src/casync/src/hashmap.c:529,1
    - Dst: next_idx
      Src: /src/casync/src/hashmap.c:535,1
    - Dst: next_idx
      Src: /src/casync/src/hashmap.c:536,1
    - Dst: bucket_calculate_dib
      Src: /src/casync/src/hashmap.c:537,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:538,1
    - Dst: bucket_move_entry
      Src: /src/casync/src/hashmap.c:539,1
    - Dst: bucket_set_dib
      Src: /src/casync/src/hashmap.c:540,1
    - Dst: bucket_mark_free
      Src: /src/casync/src/hashmap.c:543,1
    - Dst: n_entries_dec
      Src: /src/casync/src/hashmap.c:544,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - h
    - idx
    argTypes:
    - HashmapBase*
    - unsigned
    assertStmts:
    - condition: (dibs[idx] != DIB_RAW_FREE)
      pos:
        line_end: 498
        line_start: 498
        source_file: /src/casync/src/hashmap.c
    - condition: (left != right)
      pos:
        line_end: 515
        line_start: 515
        source_file: /src/casync/src/hashmap.c
    - condition: (dib != 0)
      pos:
        line_end: 537
        line_start: 537
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 545
      start: 494
    functionDepth: 4
    functionLinenumber: 494
    functionLinenumberEnd: 545
    functionName: base_remove_entry
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - ordered_bucket_at
    - bucket_calculate_dib
    - bucket_set_dib
    - bucket_move_entry
    - dib_raw_ptr
    - next_idx
    - assert
    - bucket_mark_free
    - n_entries_dec
    linkageType: ''
    returnType: void
    signature: void base_remove_entry(HashmapBase *h, unsigned idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - h
    - ','
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 547
    functionName: remove_entry
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: remove_entry(h, idx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:552,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:553,1
    - Dst: ordered_bucket_at
      Src: /src/casync/src/hashmap.c:563,1
    - Dst: ordered_bucket_at
      Src: /src/casync/src/hashmap.c:566,1
    - Dst: prev_idx
      Src: /src/casync/src/hashmap.c:574,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:574,1
    - Dst: ordered_bucket_at
      Src: /src/casync/src/hashmap.c:575,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:577,1
    - Dst: ordered_bucket_at
      Src: /src/casync/src/hashmap.c:587,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 2
    argNames:
    - h
    - i
    argTypes:
    - OrderedHashmap*
    - Iterator*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 551
        line_start: 551
        source_file: /src/casync/src/hashmap.c
    - condition: (i)
      pos:
        line_end: 552
        line_start: 552
        source_file: /src/casync/src/hashmap.c
    - condition: (e->p.b.key == i->next_key)
      pos:
        line_end: 576
        line_start: 576
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 597
      start: 548
    functionDepth: 3
    functionLinenumber: 548
    functionLinenumberEnd: 597
    functionName: hashmap_iterate_in_insertion_order
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - prev_idx
    - assert
    - HASHMAP_BASE
    - ordered_bucket_at
    linkageType: ''
    returnType: unsigned
    signature: unsigned hashmap_iterate_in_insertion_order(OrderedHashmap *h, Iterator
      *i)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:602,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:603,1
    - Dst: skip_free_buckets
      Src: /src/casync/src/hashmap.c:611,1
    - Dst: skip_free_buckets
      Src: /src/casync/src/hashmap.c:614,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:621,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:623,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:631,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:633,1
    - Dst: skip_free_buckets
      Src: /src/casync/src/hashmap.c:641,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:643,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 2
    argNames:
    - h
    - i
    argTypes:
    - HashmapBase*
    - Iterator*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 601
        line_start: 601
        source_file: /src/casync/src/hashmap.c
    - condition: (i)
      pos:
        line_end: 602
        line_start: 602
        source_file: /src/casync/src/hashmap.c
    - condition: (i->idx > 0)
      pos:
        line_end: 620
        line_start: 620
        source_file: /src/casync/src/hashmap.c
    - condition: (e->key == i->next_key)
      pos:
        line_end: 632
        line_start: 632
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 652
      start: 599
    functionDepth: 3
    functionLinenumber: 599
    functionLinenumberEnd: 652
    functionName: hashmap_iterate_in_internal_order
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - assert
    - bucket_at
    - skip_free_buckets
    linkageType: ''
    returnType: unsigned
    signature: unsigned hashmap_iterate_in_internal_order(HashmapBase *h, Iterator
      *i)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:666,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:668,1
    - Dst: hashmap_iterate_in_insertion_order
      Src: /src/casync/src/hashmap.c:676,1
    - Dst: hashmap_iterate_in_internal_order
      Src: /src/casync/src/hashmap.c:677,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - h
    - i
    argTypes:
    - HashmapBase*
    - Iterator*
    assertStmts:
    - condition: (i->put_count == h->debug.put_count)
      pos:
        line_end: 665
        line_start: 665
        source_file: /src/casync/src/hashmap.c
    - condition: "(i->rem_count == h->debug.rem_count ||\n                       (i->rem_count
        == h->debug.rem_count - 1 &&\n                        i->prev_idx == h->debug.last_rem_idx))"
      pos:
        line_end: 669
        line_start: 667
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 678
      start: 654
    functionDepth: 4
    functionLinenumber: 654
    functionLinenumberEnd: 678
    functionName: hashmap_iterate_entry
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - assert
    - hashmap_iterate_in_insertion_order
    - hashmap_iterate_in_internal_order
    linkageType: ''
    returnType: unsigned
    signature: unsigned hashmap_iterate_entry(HashmapBase *h, Iterator *i)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_iterate_entry
      Src: /src/casync/src/hashmap.c:685,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:695,1
    - Dst: entry_value
      Src: /src/casync/src/hashmap.c:696,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - h
    - i
    - value
    - key
    argTypes:
    - HashmapBase*
    - Iterator*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 680
    functionDepth: 5
    functionLinenumber: 680
    functionLinenumberEnd: 703
    functionName: internal_hashmap_iterate
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - hashmap_iterate_entry
    - entry_value
    - bucket_at
    linkageType: ''
    returnType: bool
    signature: bool internal_hashmap_iterate(HashmapBase *h, Iterator *i, void **value,
      const void **key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_iterate
      Src: /src/casync/src/hashmap.c:706,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - s
    - i
    - value
    argTypes:
    - Set*
    - Iterator*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 705
    functionDepth: 6
    functionLinenumber: 705
    functionLinenumberEnd: 707
    functionName: set_iterate
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - internal_hashmap_iterate
    - HASHMAP_BASE
    linkageType: ''
    returnType: bool
    signature: bool set_iterate(Set *s, Iterator *i, void **value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - idx
    - ','
    - h
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 713
    functionName: HASHMAP_FOREACH_IDX
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASHMAP_FOREACH_IDX(idx, h, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:718,1
    - Dst: mempset
      Src: /src/casync/src/hashmap.c:720,1
    - Dst: memset
      Src: /src/casync/src/hashmap.c:721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts:
    - condition: (!h->has_indirect)
      pos:
        line_end: 717
        line_start: 717
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 722
      start: 714
    functionDepth: 1
    functionLinenumber: 714
    functionLinenumberEnd: 722
    functionName: reset_direct_storage
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - mempset
    - assert
    - memset
    linkageType: ''
    returnType: void
    signature: void reset_direct_storage(HashmapBase *h)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_main_thread
      Src: /src/casync/src/hashmap.c:729,1
    - Dst: mempool_alloc0_tile
      Src: /src/casync/src/hashmap.c:731,1
    - Dst: malloc0
      Src: /src/casync/src/hashmap.c:731,1
    - Dst: reset_direct_storage
      Src: /src/casync/src/hashmap.c:745,1
    - Dst: random_bytes
      Src: /src/casync/src/hashmap.c:748,1
    - Dst: assert_se
      Src: /src/casync/src/hashmap.c:756,1
    - Dst: pthread_mutex_lock
      Src: /src/casync/src/hashmap.c:756,1
    - Dst: LIST_PREPEND
      Src: /src/casync/src/hashmap.c:757,1
    - Dst: assert_se
      Src: /src/casync/src/hashmap.c:758,1
    - Dst: pthread_mutex_unlock
      Src: /src/casync/src/hashmap.c:758,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - hash_ops
    - HASHMAP_DEBUG_PARAMS
    argTypes:
    - struct hash_ops*
    - enum HashmapType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 724
    functionDepth: 3
    functionLinenumber: 724
    functionLinenumberEnd: 762
    functionName: hashmap_base_new
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - is_main_thread
    - mempool_alloc0_tile
    - malloc0
    - pthread_mutex_lock
    - random_bytes
    - assert_se
    - reset_direct_storage
    - pthread_mutex_unlock
    - LIST_PREPEND
    linkageType: ''
    returnType: struct HashmapBase
    signature: struct HashmapBase *hashmap_base_new(const struct hash_ops *hash_ops,
      enum HashmapType type HASHMAP_DEBUG_PARAMS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_base_new
      Src: /src/casync/src/hashmap.c:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - HASHMAP_DEBUG_PARAMS
    argTypes:
    - struct hash_ops*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 764
    functionDepth: 4
    functionLinenumber: 764
    functionLinenumberEnd: 766
    functionName: internal_hashmap_new
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - hashmap_base_new
    linkageType: ''
    returnType: Hashmap
    signature: Hashmap *internal_hashmap_new(const struct hash_ops *hash_ops  HASHMAP_DEBUG_PARAMS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_base_new
      Src: /src/casync/src/hashmap.c:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - HASHMAP_DEBUG_PARAMS
    argTypes:
    - struct hash_ops*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 768
    functionDepth: 4
    functionLinenumber: 768
    functionLinenumberEnd: 770
    functionName: internal_ordered_hashmap_new
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - hashmap_base_new
    linkageType: ''
    returnType: OrderedHashmap
    signature: OrderedHashmap *internal_ordered_hashmap_new(const struct hash_ops
      *hash_ops  HASHMAP_DEBUG_PARAMS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_base_new
      Src: /src/casync/src/hashmap.c:773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - HASHMAP_DEBUG_PARAMS
    argTypes:
    - struct hash_ops*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 772
    functionDepth: 4
    functionLinenumber: 772
    functionLinenumberEnd: 774
    functionName: internal_set_new
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - hashmap_base_new
    linkageType: ''
    returnType: Set
    signature: Set *internal_set_new(const struct hash_ops *hash_ops  HASHMAP_DEBUG_PARAMS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:780,1
    - Dst: hashmap_base_new
      Src: /src/casync/src/hashmap.c:785,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - h
    - hash_ops
    - HASHMAP_DEBUG_PARAMS
    argTypes:
    - HashmapBase**
    - struct hash_ops*
    - enum HashmapType
    assertStmts:
    - condition: (h)
      pos:
        line_end: 779
        line_start: 779
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 791
      start: 776
    functionDepth: 4
    functionLinenumber: 776
    functionLinenumberEnd: 791
    functionName: hashmap_base_ensure_allocated
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - assert
    - hashmap_base_new
    linkageType: ''
    returnType: int
    signature: "int hashmap_base_ensure_allocated(HashmapBase **h, const struct hash_ops
      *hash_ops,\n                                         enum HashmapType type HASHMAP_DEBUG_PARAMS)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_base_ensure_allocated
      Src: /src/casync/src/hashmap.c:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - HASHMAP_DEBUG_PARAMS
    argTypes:
    - Hashmap**
    - struct hash_ops*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 793
    functionDepth: 5
    functionLinenumber: 793
    functionLinenumberEnd: 795
    functionName: internal_hashmap_ensure_allocated
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - hashmap_base_ensure_allocated
    linkageType: ''
    returnType: int
    signature: int internal_hashmap_ensure_allocated(Hashmap **h, const struct hash_ops
      *hash_ops  HASHMAP_DEBUG_PARAMS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_base_ensure_allocated
      Src: /src/casync/src/hashmap.c:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - HASHMAP_DEBUG_PARAMS
    argTypes:
    - OrderedHashmap**
    - struct hash_ops*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 797
    functionDepth: 5
    functionLinenumber: 797
    functionLinenumberEnd: 799
    functionName: internal_ordered_hashmap_ensure_allocated
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - hashmap_base_ensure_allocated
    linkageType: ''
    returnType: int
    signature: int internal_ordered_hashmap_ensure_allocated(OrderedHashmap **h, const
      struct hash_ops *hash_ops  HASHMAP_DEBUG_PARAMS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_base_ensure_allocated
      Src: /src/casync/src/hashmap.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - HASHMAP_DEBUG_PARAMS
    argTypes:
    - Set**
    - struct hash_ops*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 801
    functionDepth: 5
    functionLinenumber: 801
    functionLinenumberEnd: 803
    functionName: internal_set_ensure_allocated
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - hashmap_base_ensure_allocated
    linkageType: ''
    returnType: int
    signature: int internal_set_ensure_allocated(Set **s, const struct hash_ops *hash_ops  HASHMAP_DEBUG_PARAMS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:806,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:807,1
    - Dst: assert_se
      Src: /src/casync/src/hashmap.c:810,1
    - Dst: pthread_mutex_lock
      Src: /src/casync/src/hashmap.c:810,1
    - Dst: LIST_REMOVE
      Src: /src/casync/src/hashmap.c:811,1
    - Dst: assert_se
      Src: /src/casync/src/hashmap.c:812,1
    - Dst: pthread_mutex_unlock
      Src: /src/casync/src/hashmap.c:812,1
    - Dst: mempool_free_tile
      Src: /src/casync/src/hashmap.c:816,1
    - Dst: free
      Src: /src/casync/src/hashmap.c:818,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts:
    - condition: (!h->has_indirect)
      pos:
        line_end: 805
        line_start: 805
        source_file: /src/casync/src/hashmap.c
    - condition: (!h->n_direct_entries)
      pos:
        line_end: 806
        line_start: 806
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 819
      start: 805
    functionDepth: 1
    functionLinenumber: 805
    functionLinenumberEnd: 819
    functionName: hashmap_free_no_clear
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - LIST_REMOVE
    - pthread_mutex_lock
    - mempool_free_tile
    - assert_se
    - pthread_mutex_unlock
    - assert
    - free
    linkageType: ''
    returnType: void
    signature: void hashmap_free_no_clear(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_clear
      Src: /src/casync/src/hashmap.c:826,1
    - Dst: hashmap_free_no_clear
      Src: /src/casync/src/hashmap.c:827,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 821
    functionDepth: 2
    functionLinenumber: 821
    functionLinenumberEnd: 831
    functionName: internal_hashmap_free
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - internal_hashmap_clear
    - hashmap_free_no_clear
    linkageType: ''
    returnType: HashmapBase
    signature: HashmapBase *internal_hashmap_free(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_clear_free
      Src: /src/casync/src/hashmap.c:839,1
    - Dst: hashmap_free_no_clear
      Src: /src/casync/src/hashmap.c:840,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 833
    functionDepth: 2
    functionLinenumber: 833
    functionLinenumberEnd: 844
    functionName: internal_hashmap_free_free
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - internal_hashmap_clear_free
    - hashmap_free_no_clear
    linkageType: ''
    returnType: HashmapBase
    signature: HashmapBase *internal_hashmap_free_free(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hashmap_clear_free_free
      Src: /src/casync/src/hashmap.c:851,1
    - Dst: hashmap_free_no_clear
      Src: /src/casync/src/hashmap.c:852,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 846
    functionDepth: 2
    functionLinenumber: 846
    functionLinenumberEnd: 856
    functionName: hashmap_free_free_free
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - hashmap_clear_free_free
    - hashmap_free_no_clear
    linkageType: ''
    returnType: Hashmap
    signature: Hashmap *hashmap_free_free_free(Hashmap *h)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/casync/src/hashmap.c:863,1
    - Dst: reset_direct_storage
      Src: /src/casync/src/hashmap.c:868,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 858
    functionDepth: 2
    functionLinenumber: 858
    functionLinenumberEnd: 874
    functionName: internal_hashmap_clear
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 3
    functionsReached:
    - reset_direct_storage
    - free
    linkageType: ''
    returnType: void
    signature: void internal_hashmap_clear(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: skip_free_buckets
      Src: /src/casync/src/hashmap.c:882,1
    - Dst: skip_free_buckets
      Src: /src/casync/src/hashmap.c:883,1
    - Dst: free
      Src: /src/casync/src/hashmap.c:884,1
    - Dst: entry_value
      Src: /src/casync/src/hashmap.c:884,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:884,1
    - Dst: internal_hashmap_clear
      Src: /src/casync/src/hashmap.c:886,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 876
    functionDepth: 3
    functionLinenumber: 876
    functionLinenumberEnd: 887
    functionName: internal_hashmap_clear_free
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 3
    functionsReached:
    - entry_value
    - internal_hashmap_clear
    - skip_free_buckets
    - bucket_at
    - free
    linkageType: ''
    returnType: void
    signature: void internal_hashmap_clear_free(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: skip_free_buckets
      Src: /src/casync/src/hashmap.c:895,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:895,1
    - Dst: skip_free_buckets
      Src: /src/casync/src/hashmap.c:896,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:896,1
    - Dst: plain_bucket_at
      Src: /src/casync/src/hashmap.c:897,1
    - Dst: free
      Src: /src/casync/src/hashmap.c:898,1
    - Dst: free
      Src: /src/casync/src/hashmap.c:899,1
    - Dst: internal_hashmap_clear
      Src: /src/casync/src/hashmap.c:902,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:902,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - h
    argTypes:
    - Hashmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 889
    functionDepth: 3
    functionLinenumber: 889
    functionLinenumberEnd: 903
    functionName: hashmap_clear_free_free
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_clear
    - plain_bucket_at
    - skip_free_buckets
    - free
    linkageType: ''
    returnType: void
    signature: void hashmap_clear_free_free(Hashmap *h)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dib_raw_ptr
      Src: /src/casync/src/hashmap.c:925,1
    - Dst: bucket_move_entry
      Src: /src/casync/src/hashmap.c:931,1
    - Dst: bucket_set_dib
      Src: /src/casync/src/hashmap.c:936,1
    - Dst: bucket_move_entry
      Src: /src/casync/src/hashmap.c:937,1
    - Dst: bucket_move_entry
      Src: /src/casync/src/hashmap.c:939,1
    - Dst: bucket_calculate_dib
      Src: /src/casync/src/hashmap.c:946,1
    - Dst: bucket_set_dib
      Src: /src/casync/src/hashmap.c:950,1
    - Dst: bucket_move_entry
      Src: /src/casync/src/hashmap.c:953,1
    - Dst: bucket_move_entry
      Src: /src/casync/src/hashmap.c:954,1
    - Dst: bucket_move_entry
      Src: /src/casync/src/hashmap.c:955,1
    - Dst: next_idx
      Src: /src/casync/src/hashmap.c:960,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - h
    - idx
    - swap
    argTypes:
    - HashmapBase*
    - unsigned
    - struct swap_entries*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 916
    functionDepth: 4
    functionLinenumber: 916
    functionLinenumberEnd: 962
    functionName: hashmap_put_robin_hood
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - bucket_calculate_dib
    - bucket_set_dib
    - bucket_move_entry
    - dib_raw_ptr
    - next_idx
    linkageType: ''
    returnType: bool
    signature: "bool hashmap_put_robin_hood(HashmapBase *h, unsigned idx,\n                                   struct
      swap_entries *swap)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:979,1
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:979,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:981,1
    - Dst: resize_buckets
      Src: /src/casync/src/hashmap.c:984,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:988,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:990,1
    - Dst: n_entries
      Src: /src/casync/src/hashmap.c:990,1
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:990,1
    - Dst: ordered_bucket_at
      Src: /src/casync/src/hashmap.c:1001,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1002,1
    - Dst: assert_se
      Src: /src/casync/src/hashmap.c:1011,1
    - Dst: hashmap_put_robin_hood
      Src: /src/casync/src/hashmap.c:1011,1
    - Dst: n_entries_inc
      Src: /src/casync/src/hashmap.c:1013,1
    - Dst: MAX
      Src: /src/casync/src/hashmap.c:1015,1
    - Dst: n_entries
      Src: /src/casync/src/hashmap.c:1015,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - h
    - idx
    - swap
    - may_resize
    argTypes:
    - HashmapBase*
    - unsigned
    - struct swap_entries*
    - bool
    assertStmts:
    - condition: (idx < n_buckets(h))
      pos:
        line_end: 978
        line_start: 978
        source_file: /src/casync/src/hashmap.c
    - condition: (n_entries(h) < n_buckets(h))
      pos:
        line_end: 989
        line_start: 989
        source_file: /src/casync/src/hashmap.c
    - condition: (old_tail->iterate_next == IDX_NIL)
      pos:
        line_end: 1001
        line_start: 1001
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1019
      start: 974
    functionDepth: 5
    functionLinenumber: 974
    functionLinenumberEnd: 1019
    functionName: hashmap_base_put_boldly
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - hashmap_put_robin_hood
    - resize_buckets
    - ordered_bucket_at
    - bucket_hash
    - n_entries
    - bucket_at_swap
    - n_entries_inc
    - assert_se
    - MAX
    - n_buckets
    - assert
    linkageType: ''
    returnType: int
    signature: "int hashmap_base_put_boldly(HashmapBase *h, unsigned idx,\n                                   struct
      swap_entries *swap, bool may_resize)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - h
    - ','
    - idx
    - ','
    - swap
    - ','
    - may_resize
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1022
    functionName: hashmap_put_boldly
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hashmap_put_boldly(h, idx, swap, may_resize)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1038,1
    - Dst: n_entries
      Src: /src/casync/src/hashmap.c:1041,1
    - Dst: _unlikely_
      Src: /src/casync/src/hashmap.c:1044,1
    - Dst: _unlikely_
      Src: /src/casync/src/hashmap.c:1057,1
    - Dst: _unlikely_
      Src: /src/casync/src/hashmap.c:1060,1
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:1063,1
    - Dst: _likely_
      Src: /src/casync/src/hashmap.c:1065,1
    - Dst: log2u_round_up
      Src: /src/casync/src/hashmap.c:1068,1
    - Dst: MAX
      Src: /src/casync/src/hashmap.c:1068,1
    - Dst: realloc
      Src: /src/casync/src/hashmap.c:1073,1
    - Dst: memcpy
      Src: /src/casync/src/hashmap.c:1080,1
    - Dst: get_hash_key
      Src: /src/casync/src/hashmap.c:1090,1
    - Dst: dib_raw_ptr
      Src: /src/casync/src/hashmap.c:1098,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1107,1
    - Dst: memzero
      Src: /src/casync/src/hashmap.c:1113,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1113,1
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:1114,1
    - Dst: memset
      Src: /src/casync/src/hashmap.c:1117,1
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:1118,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1126,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1126,1
    - Dst: bucket_move_entry
      Src: /src/casync/src/hashmap.c:1139,1
    - Dst: memzero
      Src: /src/casync/src/hashmap.c:1141,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1141,1
    - Dst: hashmap_put_robin_hood
      Src: /src/casync/src/hashmap.c:1148,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1153,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:1153,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1157,1
    - Dst: n_entries
      Src: /src/casync/src/hashmap.c:1157,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 60
    argCount: 2
    argNames:
    - h
    - entries_add
    argTypes:
    - HashmapBase*
    - unsigned
    assertStmts:
    - condition: (h)
      pos:
        line_end: 1037
        line_start: 1037
        source_file: /src/casync/src/hashmap.c
    - condition: (old_dibs[idx] != DIB_RAW_REHASH)
      pos:
        line_end: 1106
        line_start: 1106
        source_file: /src/casync/src/hashmap.c
    - condition: (n_rehashed == n_entries(h))
      pos:
        line_end: 1156
        line_start: 1156
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1160
      start: 1028
    functionDepth: 5
    functionLinenumber: 1028
    functionLinenumberEnd: 1160
    functionName: resize_buckets
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - hashmap_put_robin_hood
    - realloc
    - bucket_hash
    - memcpy
    - n_entries
    - memset
    - bucket_at_swap
    - _unlikely_
    - dib_raw_ptr
    - get_hash_key
    - bucket_move_entry
    - MAX
    - _likely_
    - n_buckets
    - assert
    - log2u_round_up
    - memzero
    - bucket_at
    linkageType: ''
    returnType: int
    signature: int resize_buckets(HashmapBase *h, unsigned entries_add)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dib_raw_ptr
      Src: /src/casync/src/hashmap.c:1169,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1171,1
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:1171,1
    - Dst: bucket_calculate_dib
      Src: /src/casync/src/hashmap.c:1177,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1182,1
    - Dst: HashmapBase*::hash_ops::compare
      Src: /src/casync/src/hashmap.c:1183,1
    - Dst: next_idx
      Src: /src/casync/src/hashmap.c:1187,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - h
    - idx
    - key
    argTypes:
    - HashmapBase*
    - unsigned
    - void*
    assertStmts:
    - condition: (idx < n_buckets(h))
      pos:
        line_end: 1170
        line_start: 1170
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1189
      start: 1166
    functionDepth: 3
    functionLinenumber: 1166
    functionLinenumberEnd: 1189
    functionName: base_bucket_scan
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - bucket_calculate_dib
    - next_idx
    - HashmapBase*::hash_ops::compare
    - dib_raw_ptr
    - n_buckets
    - assert
    - bucket_at
    linkageType: ''
    returnType: unsigned
    signature: unsigned base_bucket_scan(HashmapBase *h, unsigned idx, const void
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - idx
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1190
    functionDepth: 0
    functionLinenumber: 1190
    functionLinenumberEnd: 1191
    functionName: bucket_scan
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bucket_scan(h, idx, key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1197,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1199,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1200,1
    - Dst: plain_bucket_at
      Src: /src/casync/src/hashmap.c:1202,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:1208,1
    - Dst: hashmap_put_boldly
      Src: /src/casync/src/hashmap.c:1211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - h
    - key
    - value
    argTypes:
    - Hashmap*
    - void*
    - void*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 1196
        line_start: 1196
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1212
      start: 1192
    functionDepth: 3
    functionLinenumber: 1192
    functionLinenumberEnd: 1212
    functionName: hashmap_put
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - bucket_hash
    - bucket_scan
    - bucket_at_swap
    - plain_bucket_at
    - hashmap_put_boldly
    - assert
    linkageType: ''
    returnType: int
    signature: int hashmap_put(Hashmap *h, const void *key, void *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1219,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1221,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1222,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:1226,1
    - Dst: hashmap_put_boldly
      Src: /src/casync/src/hashmap.c:1228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - s
    - key
    argTypes:
    - Set*
    - void*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1218
        line_start: 1218
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1229
      start: 1214
    functionDepth: 1
    functionLinenumber: 1214
    functionLinenumberEnd: 1229
    functionName: set_put
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - bucket_hash
    - bucket_scan
    - bucket_at_swap
    - hashmap_put_boldly
    - assert
    linkageType: ''
    returnType: int
    signature: int set_put(Set *s, const void *key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1236,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1238,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1239,1
    - Dst: plain_bucket_at
      Src: /src/casync/src/hashmap.c:1241,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:1257,1
    - Dst: hashmap_put_boldly
      Src: /src/casync/src/hashmap.c:1260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - h
    - key
    - value
    argTypes:
    - Hashmap*
    - void*
    - void*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 1235
        line_start: 1235
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1261
      start: 1231
    functionDepth: 3
    functionLinenumber: 1231
    functionLinenumberEnd: 1261
    functionName: hashmap_replace
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - bucket_hash
    - bucket_scan
    - bucket_at_swap
    - plain_bucket_at
    - hashmap_put_boldly
    - assert
    linkageType: ''
    returnType: int
    signature: int hashmap_replace(Hashmap *h, const void *key, void *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1267,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1269,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1270,1
    - Dst: plain_bucket_at
      Src: /src/casync/src/hashmap.c:1274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - h
    - key
    - value
    argTypes:
    - Hashmap*
    - void*
    - void*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 1266
        line_start: 1266
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1277
      start: 1263
    functionDepth: 3
    functionLinenumber: 1263
    functionLinenumberEnd: 1277
    functionName: hashmap_update
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - assert
    - bucket_scan
    - bucket_hash
    - plain_bucket_at
    linkageType: ''
    returnType: int
    signature: int hashmap_update(Hashmap *h, const void *key, void *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1286,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1287,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1291,1
    - Dst: entry_value
      Src: /src/casync/src/hashmap.c:1292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - h
    - key
    argTypes:
    - HashmapBase*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1279
    functionDepth: 2
    functionLinenumber: 1279
    functionLinenumberEnd: 1293
    functionName: internal_hashmap_get
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - entry_value
    - bucket_scan
    - bucket_hash
    - bucket_at
    linkageType: ''
    returnType: void
    signature: void *internal_hashmap_get(HashmapBase *h, const void *key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1302,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1303,1
    - Dst: plain_bucket_at
      Src: /src/casync/src/hashmap.c:1307,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - h
    - key
    - key2
    argTypes:
    - Hashmap*
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1312
      start: 1295
    functionDepth: 3
    functionLinenumber: 1295
    functionLinenumberEnd: 1312
    functionName: hashmap_get2
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - bucket_scan
    - bucket_hash
    - plain_bucket_at
    linkageType: ''
    returnType: void
    signature: void *hashmap_get2(Hashmap *h, const void *key, void **key2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1320,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - h
    - key
    argTypes:
    - HashmapBase*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1314
    functionDepth: 1
    functionLinenumber: 1314
    functionLinenumberEnd: 1322
    functionName: internal_hashmap_contains
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - bucket_scan
    - bucket_hash
    linkageType: ''
    returnType: bool
    signature: bool internal_hashmap_contains(HashmapBase *h, const void *key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1332,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1333,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1337,1
    - Dst: entry_value
      Src: /src/casync/src/hashmap.c:1338,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1339,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - h
    - key
    argTypes:
    - HashmapBase*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1324
    functionDepth: 2
    functionLinenumber: 1324
    functionLinenumberEnd: 1342
    functionName: internal_hashmap_remove
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - entry_value
    - remove_entry
    - bucket_hash
    - bucket_scan
    - bucket_at
    linkageType: ''
    returnType: void
    signature: void *internal_hashmap_remove(HashmapBase *h, const void *key)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1355,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1356,1
    - Dst: plain_bucket_at
      Src: /src/casync/src/hashmap.c:1363,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1368,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - h
    - key
    - rkey
    argTypes:
    - Hashmap*
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1344
    functionDepth: 3
    functionLinenumber: 1344
    functionLinenumberEnd: 1371
    functionName: hashmap_remove2
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - bucket_scan
    - bucket_hash
    - plain_bucket_at
    - remove_entry
    linkageType: ''
    returnType: void
    signature: void *hashmap_remove2(Hashmap *h, const void *key, void **rkey)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1381,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1382,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1386,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1387,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1390,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:1392,1
    - Dst: assert_se
      Src: /src/casync/src/hashmap.c:1395,1
    - Dst: hashmap_put_boldly
      Src: /src/casync/src/hashmap.c:1395,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - h
    - old_key
    - new_key
    - value
    argTypes:
    - Hashmap*
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1373
    functionDepth: 1
    functionLinenumber: 1373
    functionLinenumberEnd: 1398
    functionName: hashmap_remove_and_put
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - remove_entry
    - bucket_hash
    - bucket_scan
    - bucket_at_swap
    - assert_se
    - hashmap_put_boldly
    linkageType: ''
    returnType: int
    signature: int hashmap_remove_and_put(Hashmap *h, const void *old_key, const void
      *new_key, void *value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1408,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1409,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1413,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1414,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1417,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:1419,1
    - Dst: assert_se
      Src: /src/casync/src/hashmap.c:1421,1
    - Dst: hashmap_put_boldly
      Src: /src/casync/src/hashmap.c:1421,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - s
    - old_key
    - new_key
    argTypes:
    - Set*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1400
    functionDepth: 1
    functionLinenumber: 1400
    functionLinenumberEnd: 1424
    functionName: set_remove_and_put
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - remove_entry
    - bucket_hash
    - bucket_scan
    - bucket_at_swap
    - assert_se
    - hashmap_put_boldly
    linkageType: ''
    returnType: int
    signature: int set_remove_and_put(Set *s, const void *old_key, const void *new_key)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1434,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1435,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1439,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:1439,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1441,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1442,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1445,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1447,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:1447,1
    - Dst: prev_idx
      Src: /src/casync/src/hashmap.c:1448,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:1448,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1449,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1449,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/hashmap.c:1449,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1452,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:1454,1
    - Dst: assert_se
      Src: /src/casync/src/hashmap.c:1457,1
    - Dst: hashmap_put_boldly
      Src: /src/casync/src/hashmap.c:1457,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - h
    - old_key
    - new_key
    - value
    argTypes:
    - Hashmap*
    - void*
    - void*
    - void*
    assertStmts:
    - condition: (old_key == bucket_at(HASHMAP_BASE(h), idx_old)->key)
      pos:
        line_end: 1448
        line_start: 1448
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1460
      start: 1426
    functionDepth: 2
    functionLinenumber: 1426
    functionLinenumberEnd: 1460
    functionName: hashmap_remove_and_replace
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - remove_entry
    - prev_idx
    - bucket_hash
    - HASHMAP_BASE
    - bucket_scan
    - bucket_at_swap
    - assert_se
    - hashmap_put_boldly
    - assert
    - bucket_at
    linkageType: ''
    returnType: int
    signature: int hashmap_remove_and_replace(Hashmap *h, const void *old_key, const
      void *new_key, void *value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1469,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1470,1
    - Dst: plain_bucket_at
      Src: /src/casync/src/hashmap.c:1474,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1478,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - h
    - key
    - value
    argTypes:
    - Hashmap*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1462
    functionDepth: 3
    functionLinenumber: 1462
    functionLinenumberEnd: 1481
    functionName: hashmap_remove_value
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - bucket_scan
    - bucket_hash
    - plain_bucket_at
    - remove_entry
    linkageType: ''
    returnType: void
    signature: void *hashmap_remove_value(Hashmap *h, const void *key, void *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: n_entries
      Src: /src/casync/src/hashmap.c:1486,1
    - Dst: hashmap_iterate_entry
      Src: /src/casync/src/hashmap.c:1489,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1483
    functionDepth: 5
    functionLinenumber: 1483
    functionLinenumberEnd: 1490
    functionName: find_first_entry
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - hashmap_iterate_entry
    - n_entries
    linkageType: ''
    returnType: unsigned
    signature: unsigned find_first_entry(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_first_entry
      Src: /src/casync/src/hashmap.c:1495,1
    - Dst: entry_value
      Src: /src/casync/src/hashmap.c:1499,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1500
      start: 1492
    functionDepth: 6
    functionLinenumber: 1492
    functionLinenumberEnd: 1500
    functionName: internal_hashmap_first
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - entry_value
    - bucket_at
    - find_first_entry
    linkageType: ''
    returnType: void
    signature: void *internal_hashmap_first(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_first_entry
      Src: /src/casync/src/hashmap.c:1506,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1510,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1502
    functionDepth: 6
    functionLinenumber: 1502
    functionLinenumberEnd: 1512
    functionName: internal_hashmap_first_key
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - bucket_at
    - find_first_entry
    linkageType: ''
    returnType: void
    signature: void *internal_hashmap_first_key(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_first_entry
      Src: /src/casync/src/hashmap.c:1519,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1523,1
    - Dst: entry_value
      Src: /src/casync/src/hashmap.c:1524,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1514
    functionDepth: 6
    functionLinenumber: 1514
    functionLinenumberEnd: 1528
    functionName: internal_hashmap_steal_first
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - entry_value
    - bucket_at
    - remove_entry
    - find_first_entry
    linkageType: ''
    returnType: void
    signature: void *internal_hashmap_steal_first(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_first_entry
      Src: /src/casync/src/hashmap.c:1535,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1539,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1541,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1530
    functionDepth: 6
    functionLinenumber: 1530
    functionLinenumberEnd: 1544
    functionName: internal_hashmap_steal_first_key
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - remove_entry
    - bucket_at
    - find_first_entry
    linkageType: ''
    returnType: void
    signature: void *internal_hashmap_steal_first_key(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: n_entries
      Src: /src/casync/src/hashmap.c:1551,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1546
    functionDepth: 1
    functionLinenumber: 1546
    functionLinenumberEnd: 1552
    functionName: internal_hashmap_size
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - n_entries
    linkageType: ''
    returnType: unsigned
    signature: unsigned internal_hashmap_size(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: n_buckets
      Src: /src/casync/src/hashmap.c:1559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1554
    functionDepth: 1
    functionLinenumber: 1554
    functionLinenumberEnd: 1560
    functionName: internal_hashmap_buckets
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - n_buckets
    linkageType: ''
    returnType: unsigned
    signature: unsigned internal_hashmap_buckets(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1566,1
    - Dst: plain_bucket_at
      Src: /src/casync/src/hashmap.c:1569,1
    - Dst: hashmap_put
      Src: /src/casync/src/hashmap.c:1572,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - h
    - other
    argTypes:
    - Hashmap*
    - Hashmap*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 1565
        line_start: 1565
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1578
      start: 1562
    functionDepth: 4
    functionLinenumber: 1562
    functionLinenumberEnd: 1578
    functionName: internal_hashmap_merge
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - assert
    - plain_bucket_at
    - hashmap_put
    linkageType: ''
    returnType: int
    signature: int internal_hashmap_merge(Hashmap *h, Hashmap *other)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: plain_bucket_at
      Src: /src/casync/src/hashmap.c:1569,1
    - Dst: hashmap_put
      Src: /src/casync/src/hashmap.c:1572,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1568
    functionDepth: 4
    functionLinenumber: 1568
    functionLinenumberEnd: 1575
    functionName: HASHMAP_FOREACH_IDX
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - plain_bucket_at
    - hashmap_put
    linkageType: ''
    returnType: void
    signature: void HASHMAP_FOREACH_IDX(idx, HASHMAP_BASE(other), i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1584,1
    - Dst: set_bucket_at
      Src: /src/casync/src/hashmap.c:1587,1
    - Dst: set_put
      Src: /src/casync/src/hashmap.c:1590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - s
    - other
    argTypes:
    - Set*
    - Set*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1583
        line_start: 1583
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1596
      start: 1580
    functionDepth: 3
    functionLinenumber: 1580
    functionLinenumberEnd: 1596
    functionName: set_merge
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - assert
    - set_bucket_at
    - set_put
    linkageType: ''
    returnType: int
    signature: int set_merge(Set *s, Set *other)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_bucket_at
      Src: /src/casync/src/hashmap.c:1587,1
    - Dst: set_put
      Src: /src/casync/src/hashmap.c:1590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1586
    functionDepth: 3
    functionLinenumber: 1586
    functionLinenumberEnd: 1593
    functionName: HASHMAP_FOREACH_IDX
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - set_bucket_at
    - set_put
    linkageType: ''
    returnType: void
    signature: void HASHMAP_FOREACH_IDX(idx, HASHMAP_BASE(other), i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1601,1
    - Dst: resize_buckets
      Src: /src/casync/src/hashmap.c:1603,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - h
    - entries_add
    argTypes:
    - HashmapBase*
    - unsigned
    assertStmts:
    - condition: (h)
      pos:
        line_end: 1600
        line_start: 1600
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1608
      start: 1598
    functionDepth: 6
    functionLinenumber: 1598
    functionLinenumberEnd: 1608
    functionName: internal_hashmap_reserve
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - assert
    - resize_buckets
    linkageType: ''
    returnType: int
    signature: int internal_hashmap_reserve(HashmapBase *h, unsigned entries_add)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1623,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1628,1
    - Dst: resize_buckets
      Src: /src/casync/src/hashmap.c:1636,1
    - Dst: n_entries
      Src: /src/casync/src/hashmap.c:1636,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1643,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1644,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1645,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:1648,1
    - Dst: assert_se
      Src: /src/casync/src/hashmap.c:1653,1
    - Dst: hashmap_put_boldly
      Src: /src/casync/src/hashmap.c:1653,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1655,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - h
    - other
    argTypes:
    - HashmapBase*
    - HashmapBase*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 1622
        line_start: 1622
        source_file: /src/casync/src/hashmap.c
    - condition: (other->type == h->type)
      pos:
        line_end: 1627
        line_start: 1627
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1659
      start: 1616
    functionDepth: 6
    functionLinenumber: 1616
    functionLinenumberEnd: 1659
    functionName: internal_hashmap_move
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - resize_buckets
    - remove_entry
    - bucket_hash
    - bucket_scan
    - n_entries
    - bucket_at_swap
    - assert_se
    - hashmap_put_boldly
    - assert
    - bucket_at
    linkageType: ''
    returnType: int
    signature: int internal_hashmap_move(HashmapBase *h, HashmapBase *other)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1643,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1644,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1645,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:1648,1
    - Dst: assert_se
      Src: /src/casync/src/hashmap.c:1653,1
    - Dst: hashmap_put_boldly
      Src: /src/casync/src/hashmap.c:1653,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1655,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1640
    functionDepth: 2
    functionLinenumber: 1640
    functionLinenumberEnd: 1656
    functionName: HASHMAP_FOREACH_IDX
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - remove_entry
    - bucket_hash
    - bucket_scan
    - bucket_at_swap
    - assert_se
    - hashmap_put_boldly
    - bucket_at
    linkageType: ''
    returnType: void
    signature: void HASHMAP_FOREACH_IDX(idx, other, i)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1667,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1669,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1670,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1676,1
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1678,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1679,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1683,1
    - Dst: bucket_at_swap
      Src: /src/casync/src/hashmap.c:1685,1
    - Dst: hashmap_put_boldly
      Src: /src/casync/src/hashmap.c:1690,1
    - Dst: remove_entry
      Src: /src/casync/src/hashmap.c:1694,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - h
    - other
    - key
    argTypes:
    - HashmapBase*
    - HashmapBase*
    - void*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 1666
        line_start: 1666
        source_file: /src/casync/src/hashmap.c
    - condition: (other->type == h->type)
      pos:
        line_end: 1675
        line_start: 1675
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1696
      start: 1661
    functionDepth: 2
    functionLinenumber: 1661
    functionLinenumberEnd: 1696
    functionName: internal_hashmap_move_one
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - remove_entry
    - bucket_hash
    - bucket_scan
    - bucket_at_swap
    - hashmap_put_boldly
    - assert
    - bucket_at
    linkageType: ''
    returnType: int
    signature: int internal_hashmap_move_one(HashmapBase *h, HashmapBase *other, const
      void *key)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1702,1
    - Dst: hashmap_base_new
      Src: /src/casync/src/hashmap.c:1704,1
    - Dst: hashmap_merge
      Src: /src/casync/src/hashmap.c:1711,1
    - Dst: set_merge
      Src: /src/casync/src/hashmap.c:1714,1
    - Dst: assert_not_reached
      Src: /src/casync/src/hashmap.c:1717,1
    - Dst: internal_hashmap_free
      Src: /src/casync/src/hashmap.c:1721,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - h
    argTypes:
    - HashmapBase*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 1701
        line_start: 1701
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1726
      start: 1698
    functionDepth: 4
    functionLinenumber: 1698
    functionLinenumberEnd: 1726
    functionName: internal_hashmap_copy
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - internal_hashmap_free
    - hashmap_base_new
    - hashmap_merge
    - set_merge
    - assert
    - assert_not_reached
    linkageType: ''
    returnType: HashmapBase
    signature: HashmapBase *internal_hashmap_copy(HashmapBase *h)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: n_entries
      Src: /src/casync/src/hashmap.c:1733,1
    - Dst: HASHMAP_FOREACH_IDX
      Src: /src/casync/src/hashmap.c:1738,1
    - Dst: entry_value
      Src: /src/casync/src/hashmap.c:1739,1
    - Dst: bucket_at
      Src: /src/casync/src/hashmap.c:1739,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1728
    functionDepth: 2
    functionLinenumber: 1728
    functionLinenumberEnd: 1743
    functionName: internal_hashmap_get_strv
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 2
    functionsReached:
    - entry_value
    - n_entries
    - HASHMAP_FOREACH_IDX
    - bucket_at
    linkageType: ''
    returnType: char
    signature: char **internal_hashmap_get_strv(HashmapBase *h)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bucket_hash
      Src: /src/casync/src/hashmap.c:1752,1
    - Dst: bucket_scan
      Src: /src/casync/src/hashmap.c:1753,1
    - Dst: ordered_bucket_at
      Src: /src/casync/src/hashmap.c:1757,1
    - Dst: ordered_bucket_at
      Src: /src/casync/src/hashmap.c:1760,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - h
    - key
    argTypes:
    - OrderedHashmap*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1745
    functionDepth: 3
    functionLinenumber: 1745
    functionLinenumberEnd: 1761
    functionName: ordered_hashmap_next
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - bucket_scan
    - bucket_hash
    - ordered_bucket_at
    linkageType: ''
    returnType: void
    signature: void *ordered_hashmap_next(OrderedHashmap *h, const void *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1766,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1767,1
    - Dst: set_put
      Src: /src/casync/src/hashmap.c:1769,1
    - Dst: free
      Src: /src/casync/src/hashmap.c:1771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - s
    - value
    argTypes:
    - Set*
    - void*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1765
        line_start: 1765
        source_file: /src/casync/src/hashmap.c
    - condition: (value)
      pos:
        line_end: 1766
        line_start: 1766
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1774
      start: 1763
    functionDepth: 2
    functionLinenumber: 1763
    functionLinenumberEnd: 1774
    functionName: set_consume
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - assert
    - free
    - set_put
    linkageType: ''
    returnType: int
    signature: int set_consume(Set *s, void *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1779,1
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1780,1
    - Dst: set_contains
      Src: /src/casync/src/hashmap.c:1782,1
    - Dst: strdup
      Src: /src/casync/src/hashmap.c:1785,1
    - Dst: set_consume
      Src: /src/casync/src/hashmap.c:1789,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - s
    - p
    argTypes:
    - Set*
    - char*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1778
        line_start: 1778
        source_file: /src/casync/src/hashmap.c
    - condition: (p)
      pos:
        line_end: 1779
        line_start: 1779
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1790
      start: 1776
    functionDepth: 3
    functionLinenumber: 1776
    functionLinenumberEnd: 1790
    functionName: set_put_strdup
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - set_consume
    - assert
    - set_contains
    - strdup
    linkageType: ''
    returnType: int
    signature: int set_put_strdup(Set *s, const char *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/hashmap.c:1796,1
    - Dst: set_put_strdup
      Src: /src/casync/src/hashmap.c:1799,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - s
    - l
    argTypes:
    - Set*
    - char**
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1795
        line_start: 1795
        source_file: /src/casync/src/hashmap.c
    constantsTouched: []
    func_position:
      end: 1807
      start: 1792
    functionDepth: 4
    functionLinenumber: 1792
    functionLinenumberEnd: 1807
    functionName: set_put_strdupv
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 0
    functionsReached:
    - assert
    - set_put_strdup
    linkageType: ''
    returnType: int
    signature: int set_put_strdupv(Set *s, char **l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_put_strdup
      Src: /src/casync/src/hashmap.c:1799,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1804
      start: 1798
    functionDepth: 4
    functionLinenumber: 1798
    functionLinenumberEnd: 1804
    functionName: STRV_FOREACH
    functionSourceFile: /src/casync/src/hashmap.c
    functionUses: 1
    functionsReached:
    - set_put_strdup
    linkageType: ''
    returnType: void
    signature: void STRV_FOREACH(i, l)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/casync/src/compressor.c:26,1
    - Dst: memcmp
      Src: /src/casync/src/compressor.c:30,1
    - Dst: memcmp
      Src: /src/casync/src/compressor.c:34,1
    - Dst: MAX3
      Src: /src/casync/src/compressor.c:37,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 41
    functionName: detect_compression
    functionSourceFile: /src/casync/src/compressor.c
    functionUses: 3
    functionsReached:
    - MAX3
    - memcmp
    linkageType: ''
    returnType: int
    signature: int detect_compression(const void *buffer, size_t size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/compressor.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - compressor
    argTypes:
    - CaCompressionType
    assertStmts:
    - condition: ("Unknown compression type")
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/casync/src/compressor.c
    constantsTouched: []
    func_position:
      end: 55
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 55
    functionName: compressor_is_supported
    functionSourceFile: /src/casync/src/compressor.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool compressor_is_supported(CaCompressionType compressor)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lzma_stream_decoder
      Src: /src/casync/src/compressor.c:73,1
    - Dst: inflateInit2
      Src: /src/casync/src/compressor.c:84,1
    - Dst: ZSTD_createDStream
      Src: /src/casync/src/compressor.c:94,1
    - Dst: ZSTD_initDStream
      Src: /src/casync/src/compressor.c:98,1
    - Dst: assert_not_reached
      Src: /src/casync/src/compressor.c:105,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - c
    - compressor
    argTypes:
    - CompressorContext*
    - CaCompressionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 112
    functionName: compressor_start_decode
    functionSourceFile: /src/casync/src/compressor.c
    functionUses: 4
    functionsReached:
    - inflateInit2
    - ZSTD_initDStream
    - lzma_stream_decoder
    - ZSTD_createDStream
    - assert_not_reached
    linkageType: ''
    returnType: int
    signature: int compressor_start_decode(CompressorContext *c, CaCompressionType
      compressor)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lzma_easy_encoder
      Src: /src/casync/src/compressor.c:130,1
    - Dst: deflateInit2
      Src: /src/casync/src/compressor.c:141,1
    - Dst: ZSTD_createCStream
      Src: /src/casync/src/compressor.c:151,1
    - Dst: ZSTD_initCStream
      Src: /src/casync/src/compressor.c:155,1
    - Dst: assert_not_reached
      Src: /src/casync/src/compressor.c:162,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - c
    - compressor
    argTypes:
    - CompressorContext*
    - CaCompressionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 169
    functionName: compressor_start_encode
    functionSourceFile: /src/casync/src/compressor.c
    functionUses: 3
    functionsReached:
    - ZSTD_initCStream
    - lzma_easy_encoder
    - ZSTD_createCStream
    - deflateInit2
    - assert_not_reached
    linkageType: ''
    returnType: int
    signature: int compressor_start_encode(CompressorContext *c, CaCompressionType
      compressor)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lzma_end
      Src: /src/casync/src/compressor.c:181,1
    - Dst: inflateEnd
      Src: /src/casync/src/compressor.c:188,1
    - Dst: deflateEnd
      Src: /src/casync/src/compressor.c:190,1
    - Dst: assert_not_reached
      Src: /src/casync/src/compressor.c:192,1
    - Dst: ZSTD_freeCStream
      Src: /src/casync/src/compressor.c:199,1
    - Dst: ZSTD_freeDStream
      Src: /src/casync/src/compressor.c:201,1
    - Dst: assert_not_reached
      Src: /src/casync/src/compressor.c:203,1
    - Dst: assert_not_reached
      Src: /src/casync/src/compressor.c:208,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - c
    argTypes:
    - CompressorContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 210
    functionName: compressor_finish
    functionSourceFile: /src/casync/src/compressor.c
    functionUses: 0
    functionsReached:
    - ZSTD_freeCStream
    - inflateEnd
    - lzma_end
    - ZSTD_freeDStream
    - deflateEnd
    - assert_not_reached
    linkageType: ''
    returnType: void
    signature: void compressor_finish(CompressorContext *c)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert_not_reached
      Src: /src/casync/src/compressor.c:251,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - c
    - p
    - sz
    argTypes:
    - CompressorContext*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 255
    functionName: compressor_input
    functionSourceFile: /src/casync/src/compressor.c
    functionUses: 7
    functionsReached:
    - assert_not_reached
    linkageType: ''
    returnType: int
    signature: int compressor_input(CompressorContext *c, const void *p, size_t sz)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/compressor.c:279,1
    - Dst: assert
      Src: /src/casync/src/compressor.c:280,1
    - Dst: lzma_code
      Src: /src/casync/src/compressor.c:282,1
    - Dst: assert
      Src: /src/casync/src/compressor.c:310,1
    - Dst: assert
      Src: /src/casync/src/compressor.c:311,1
    - Dst: inflate
      Src: /src/casync/src/compressor.c:313,1
    - Dst: assert
      Src: /src/casync/src/compressor.c:344,1
    - Dst: assert
      Src: /src/casync/src/compressor.c:345,1
    - Dst: ZSTD_decompressStream
      Src: /src/casync/src/compressor.c:347,1
    - Dst: ZSTD_isError
      Src: /src/casync/src/compressor.c:348,1
    - Dst: assert_not_reached
      Src: /src/casync/src/compressor.c:369,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 71
    argCount: 4
    argNames:
    - c
    - p
    - sz
    - ret_done
    argTypes:
    - CompressorContext*
    - void*
    - size_t
    - size_t*
    assertStmts:
    - condition: (c->xz.avail_out > 0)
      pos:
        line_end: 278
        line_start: 278
        source_file: /src/casync/src/compressor.c
    - condition: (c->xz.avail_in > 0)
      pos:
        line_end: 279
        line_start: 279
        source_file: /src/casync/src/compressor.c
    - condition: (c->gzip.avail_out > 0)
      pos:
        line_end: 309
        line_start: 309
        source_file: /src/casync/src/compressor.c
    - condition: (c->gzip.avail_in > 0)
      pos:
        line_end: 310
        line_start: 310
        source_file: /src/casync/src/compressor.c
    - condition: (c->zstd.output.size > c->zstd.output.pos)
      pos:
        line_end: 343
        line_start: 343
        source_file: /src/casync/src/compressor.c
    - condition: (c->zstd.input.size > c->zstd.input.pos)
      pos:
        line_end: 344
        line_start: 344
        source_file: /src/casync/src/compressor.c
    constantsTouched: []
    func_position:
      end: 371
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 371
    functionName: compressor_decode
    functionSourceFile: /src/casync/src/compressor.c
    functionUses: 4
    functionsReached:
    - inflate
    - ZSTD_decompressStream
    - assert_not_reached
    - assert
    - ZSTD_isError
    - lzma_code
    linkageType: ''
    returnType: int
    signature: int compressor_decode(CompressorContext *c, void *p, size_t sz, size_t
      *ret_done)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: lzma_code
      Src: /src/casync/src/compressor.c:395,1
    - Dst: assert
      Src: /src/casync/src/compressor.c:397,1
    - Dst: deflate
      Src: /src/casync/src/compressor.c:419,1
    - Dst: assert
      Src: /src/casync/src/compressor.c:421,1
    - Dst: assert
      Src: /src/casync/src/compressor.c:446,1
    - Dst: ZSTD_compressStream
      Src: /src/casync/src/compressor.c:449,1
    - Dst: assert
      Src: /src/casync/src/compressor.c:451,1
    - Dst: ZSTD_endStream
      Src: /src/casync/src/compressor.c:452,1
    - Dst: ZSTD_isError
      Src: /src/casync/src/compressor.c:454,1
    - Dst: assert_not_reached
      Src: /src/casync/src/compressor.c:471,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 64
    argCount: 5
    argNames:
    - c
    - finalize
    - p
    - sz
    - ret_done
    argTypes:
    - CompressorContext*
    - bool
    - void*
    - size_t
    - size_t*
    assertStmts:
    - condition: (c->zstd.output.size > c->zstd.output.pos)
      pos:
        line_end: 445
        line_start: 445
        source_file: /src/casync/src/compressor.c
    - condition: (c->xz.avail_in == 0)
      pos:
        line_end: 396
        line_start: 396
        source_file: /src/casync/src/compressor.c
    - condition: (c->gzip.avail_in == 0)
      pos:
        line_end: 420
        line_start: 420
        source_file: /src/casync/src/compressor.c
    - condition: (finalize)
      pos:
        line_end: 450
        line_start: 450
        source_file: /src/casync/src/compressor.c
    constantsTouched: []
    func_position:
      end: 473
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 473
    functionName: compressor_encode
    functionSourceFile: /src/casync/src/compressor.c
    functionUses: 3
    functionsReached:
    - deflate
    - ZSTD_compressStream
    - ZSTD_endStream
    - assert_not_reached
    - assert
    - ZSTD_isError
    - lzma_code
    linkageType: ''
    returnType: int
    signature: int compressor_encode(CompressorContext *c, bool finalize, void *p,
      size_t sz, size_t *ret_done)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/calocation.h:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaLocationDesignator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 35
    functionName: CA_LOCATION_DESIGNATOR_VALID
    functionSourceFile: /src/casync/src/calocation.h
    functionUses: 1
    functionsReached:
    - IN_SET
    linkageType: ''
    returnType: bool
    signature: bool CA_LOCATION_DESIGNATOR_VALID(CaLocationDesignator d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - size
    - ','
    - ret
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: ca_location_new_void
    functionSourceFile: /src/casync/src/calocation.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ca_location_new_void(size, ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: ca_location_format
    functionSourceFile: /src/casync/src/calocation.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ca_location_format(l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: exit_signal_handler
      Src: /src/casync/src/cafuse.c:23,1
    - Dst: fuse_exit
      Src: /src/casync/src/cafuse.c:27,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 28
    functionName: fuse_exit_signal_handler
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - fuse_exit
    - exit_signal_handler
    linkageType: ''
    returnType: void
    signature: void fuse_exit_signal_handler(int signo)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cafuse.c:33,1
    - Dst: ca_sync_step
      Src: /src/casync/src/cafuse.c:38,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:40,1
    - Dst: log_error
      Src: /src/casync/src/cafuse.c:45,1
    - Dst: sync_poll_sigset
      Src: /src/casync/src/cafuse.c:60,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:64,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 32
        line_start: 32
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 73
      start: 30
    functionDepth: 10
    functionLinenumber: 30
    functionLinenumberEnd: 73
    functionName: iterate_until_file
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - ca_sync_step
    - log_error_errno
    - assert
    - sync_poll_sigset
    - log_error
    linkageType: ''
    returnType: int
    signature: int iterate_until_file(CaSync *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cafuse.c:78,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:79,1
    - Dst: ca_sync_seek_path
      Src: /src/casync/src/cafuse.c:81,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:83,1
    - Dst: iterate_until_file
      Src: /src/casync/src/cafuse.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - CaSync*
    - char*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 77
        line_start: 77
        source_file: /src/casync/src/cafuse.c
    - condition: (path)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 86
      start: 75
    functionDepth: 11
    functionLinenumber: 75
    functionLinenumberEnd: 86
    functionName: seek_to_path
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - assert
    - log_error_errno
    - ca_sync_seek_path
    - iterate_until_file
    linkageType: ''
    returnType: int
    signature: int seek_to_path(CaSync *s, const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cafuse.c:97,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:98,1
    - Dst: ca_sync_current_mode
      Src: /src/casync/src/cafuse.c:100,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:102,1
    - Dst: ca_sync_current_uid
      Src: /src/casync/src/cafuse.c:104,1
    - Dst: ca_sync_current_gid
      Src: /src/casync/src/cafuse.c:105,1
    - Dst: ca_sync_current_mtime
      Src: /src/casync/src/cafuse.c:106,1
    - Dst: S_ISREG
      Src: /src/casync/src/cafuse.c:108,1
    - Dst: ca_sync_current_size
      Src: /src/casync/src/cafuse.c:109,1
    - Dst: S_ISBLK
      Src: /src/casync/src/cafuse.c:110,1
    - Dst: S_ISCHR
      Src: /src/casync/src/cafuse.c:110,1
    - Dst: ca_sync_current_rdev
      Src: /src/casync/src/cafuse.c:111,1
    - Dst: S_ISDIR
      Src: /src/casync/src/cafuse.c:115,1
    - Dst: NSEC_TO_TIMESPEC_INIT
      Src: /src/casync/src/cafuse.c:120,1
    - Dst: NSEC_TO_TIMESPEC_INIT
      Src: /src/casync/src/cafuse.c:121,1
    - Dst: NSEC_TO_TIMESPEC_INIT
      Src: /src/casync/src/cafuse.c:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - s
    - stbuf
    argTypes:
    - CaSync*
    - struct stat*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 96
        line_start: 96
        source_file: /src/casync/src/cafuse.c
    - condition: (stbuf)
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 126
      start: 88
    functionDepth: 3
    functionLinenumber: 88
    functionLinenumberEnd: 126
    functionName: fill_stat
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - S_ISCHR
    - S_ISDIR
    - log_error_errno
    - S_ISREG
    - NSEC_TO_TIMESPEC_INIT
    - ca_sync_current_mtime
    - ca_sync_current_gid
    - ca_sync_current_mode
    - S_ISBLK
    - ca_sync_current_size
    - ca_sync_current_uid
    - assert
    - ca_sync_current_rdev
    linkageType: ''
    returnType: int
    signature: int fill_stat(CaSync *s, struct stat *stbuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct fuse_conn_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 130
    functionName: casync_init
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *casync_init(struct fuse_conn_info *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cafuse.c:138,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:139,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:140,1
    - Dst: seek_to_path
      Src: /src/casync/src/cafuse.c:144,1
    - Dst: fill_stat
      Src: /src/casync/src/cafuse.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - path
    - stbuf
    argTypes:
    - char*
    - struct stat*
    assertStmts:
    - condition: (path)
      pos:
        line_end: 137
        line_start: 137
        source_file: /src/casync/src/cafuse.c
    - condition: (stbuf)
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/casync/src/cafuse.c
    - condition: (instance)
      pos:
        line_end: 139
        line_start: 139
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 155
      start: 132
    functionDepth: 12
    functionLinenumber: 132
    functionLinenumberEnd: 155
    functionName: casync_getattr
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - assert
    - seek_to_path
    - fill_stat
    linkageType: ''
    returnType: int
    signature: "int casync_getattr(\n                const char *path,\n                struct
      stat *stbuf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cafuse.c:165,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:166,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:167,1
    - Dst: seek_to_path
      Src: /src/casync/src/cafuse.c:171,1
    - Dst: ca_sync_current_target
      Src: /src/casync/src/cafuse.c:175,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:177,1
    - Dst: strncpy
      Src: /src/casync/src/cafuse.c:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - path
    - ret
    - size
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts:
    - condition: (path)
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/casync/src/cafuse.c
    - condition: (ret)
      pos:
        line_end: 165
        line_start: 165
        source_file: /src/casync/src/cafuse.c
    - condition: (size)
      pos:
        line_end: 166
        line_start: 166
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 184
      start: 157
    functionDepth: 12
    functionLinenumber: 157
    functionLinenumberEnd: 184
    functionName: casync_readlink
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - strncpy
    - ca_sync_current_target
    - seek_to_path
    - log_error_errno
    - assert
    linkageType: ''
    returnType: int
    signature: "int casync_readlink(\n                const char *path,\n                char
      *ret,\n                size_t size)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: filler
      Src: /src/casync/src/cafuse.c:198,1
    - Dst: filler
      Src: /src/casync/src/cafuse.c:201,1
    - Dst: ca_sync_set_payload
      Src: /src/casync/src/cafuse.c:204,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:206,1
    - Dst: ca_sync_seek_path
      Src: /src/casync/src/cafuse.c:208,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:210,1
    - Dst: ca_sync_step
      Src: /src/casync/src/cafuse.c:215,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:217,1
    - Dst: ca_sync_current_path
      Src: /src/casync/src/cafuse.c:233,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:235,1
    - Dst: fill_stat
      Src: /src/casync/src/cafuse.c:237,1
    - Dst: free
      Src: /src/casync/src/cafuse.c:239,1
    - Dst: filler
      Src: /src/casync/src/cafuse.c:243,1
    - Dst: basename
      Src: /src/casync/src/cafuse.c:243,1
    - Dst: free
      Src: /src/casync/src/cafuse.c:244,1
    - Dst: free
      Src: /src/casync/src/cafuse.c:248,1
    - Dst: ca_sync_seek_next_sibling
      Src: /src/casync/src/cafuse.c:250,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:252,1
    - Dst: sync_poll_sigset
      Src: /src/casync/src/cafuse.c:266,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:270,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 5
    argNames:
    - path
    - buf
    - filler
    - offset
    - info
    argTypes:
    - char*
    - void*
    - fuse_fill_dir_t
    - off_t
    - struct fuse_file_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 186
    functionDepth: 10
    functionLinenumber: 186
    functionLinenumberEnd: 283
    functionName: casync_readdir
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - basename
    - ca_sync_set_payload
    - ca_sync_step
    - ca_sync_seek_next_sibling
    - log_error_errno
    - ca_sync_current_path
    - sync_poll_sigset
    - filler
    - ca_sync_seek_path
    - fill_stat
    - free
    linkageType: ''
    returnType: int
    signature: "int casync_readdir(\n                const char *path,\n                void
      *buf,\n                fuse_fill_dir_t filler,\n                off_t offset,\n
      \               struct fuse_file_info *info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cafuse.c:287,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:288,1
    - Dst: seek_to_path
      Src: /src/casync/src/cafuse.c:292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - path
    - fi
    argTypes:
    - char*
    - struct fuse_file_info*
    assertStmts:
    - condition: (path)
      pos:
        line_end: 286
        line_start: 286
        source_file: /src/casync/src/cafuse.c
    - condition: (fi)
      pos:
        line_end: 287
        line_start: 287
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 304
      start: 284
    functionDepth: 12
    functionLinenumber: 284
    functionLinenumberEnd: 304
    functionName: casync_open
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - assert
    - seek_to_path
    linkageType: ''
    returnType: int
    signature: int casync_open(const char *path, struct fuse_file_info *fi)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cafuse.c:308,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:309,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:310,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:311,1
    - Dst: ca_sync_set_payload
      Src: /src/casync/src/cafuse.c:315,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:317,1
    - Dst: ca_sync_seek_path_offset
      Src: /src/casync/src/cafuse.c:319,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:321,1
    - Dst: ca_sync_step
      Src: /src/casync/src/cafuse.c:330,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:332,1
    - Dst: ca_sync_get_payload
      Src: /src/casync/src/cafuse.c:344,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:346,1
    - Dst: memcpy
      Src: /src/casync/src/cafuse.c:351,1
    - Dst: sync_poll_sigset
      Src: /src/casync/src/cafuse.c:369,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:373,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 5
    argNames:
    - path
    - buf
    - size
    - offset
    - fi
    argTypes:
    - char*
    - char*
    - size_t
    - off_t
    - struct fuse_file_info*
    assertStmts:
    - condition: (path)
      pos:
        line_end: 307
        line_start: 307
        source_file: /src/casync/src/cafuse.c
    - condition: (fi)
      pos:
        line_end: 310
        line_start: 310
        source_file: /src/casync/src/cafuse.c
    - condition: (size > 0)
      pos:
        line_end: 309
        line_start: 309
        source_file: /src/casync/src/cafuse.c
    - condition: (buf)
      pos:
        line_end: 308
        line_start: 308
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 389
      start: 305
    functionDepth: 10
    functionLinenumber: 305
    functionLinenumberEnd: 389
    functionName: casync_read
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - ca_sync_seek_path_offset
    - ca_sync_set_payload
    - memcpy
    - ca_sync_step
    - log_error_errno
    - ca_sync_get_payload
    - assert
    - sync_poll_sigset
    linkageType: ''
    returnType: int
    signature: int casync_read(const char *path, char *buf, size_t size, off_t offset,
      struct fuse_file_info *fi)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_get_archive_size
      Src: /src/casync/src/cafuse.c:400,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:404,1
    - Dst: ca_sync_step
      Src: /src/casync/src/cafuse.c:406,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:408,1
    - Dst: log_error
      Src: /src/casync/src/cafuse.c:413,1
    - Dst: sync_poll_sigset
      Src: /src/casync/src/cafuse.c:427,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:431,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:435,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - path
    - sfs
    argTypes:
    - char*
    - struct statvfs*
    assertStmts:
    - condition: (false)
      pos:
        line_end: 434
        line_start: 434
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 448
      start: 391
    functionDepth: 10
    functionLinenumber: 391
    functionLinenumberEnd: 448
    functionName: casync_statfs
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - ca_sync_step
    - log_error_errno
    - ca_sync_get_archive_size
    - assert
    - sync_poll_sigset
    - log_error
    linkageType: ''
    returnType: int
    signature: int casync_statfs(const char *path, struct statvfs *sfs)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/cafuse.c:463,1
    - Dst: seek_to_path
      Src: /src/casync/src/cafuse.c:466,1
    - Dst: ca_sync_current_chattr
      Src: /src/casync/src/cafuse.c:475,1
    - Dst: ca_sync_current_fat_attrs
      Src: /src/casync/src/cafuse.c:486,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:495,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 6
    argNames:
    - path
    - cmd
    - arg
    - fi
    - flags
    - data
    argTypes:
    - char*
    - int
    - void*
    - struct fuse_file_info*
    - unsigned int
    - void*
    assertStmts:
    - condition: (false)
      pos:
        line_end: 494
        line_start: 494
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 499
      start: 450
    functionDepth: 12
    functionLinenumber: 450
    functionLinenumberEnd: 499
    functionName: casync_ioctl
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - IN_SET
    - ca_sync_current_fat_attrs
    - seek_to_path
    - assert
    - ca_sync_current_chattr
    linkageType: ''
    returnType: int
    signature: "int casync_ioctl(\n                const char *path,\n                int
      cmd,\n                void *arg,\n                struct fuse_file_info *fi,\n
      \               unsigned int flags,\n                void *data)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cafuse.c:507,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:508,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:509,1
    - Dst: seek_to_path
      Src: /src/casync/src/cafuse.c:511,1
    - Dst: ca_sync_current_xattr
      Src: /src/casync/src/cafuse.c:515,1
    - Dst: streq
      Src: /src/casync/src/cafuse.c:522,1
    - Dst: memcpy
      Src: /src/casync/src/cafuse.c:529,1
    - Dst: ca_sync_current_xattr
      Src: /src/casync/src/cafuse.c:533,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 4
    argNames:
    - path
    - name
    - buffer
    - size
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    assertStmts:
    - condition: (path)
      pos:
        line_end: 506
        line_start: 506
        source_file: /src/casync/src/cafuse.c
    - condition: (buffer || size == 0)
      pos:
        line_end: 508
        line_start: 508
        source_file: /src/casync/src/cafuse.c
    - condition: (name)
      pos:
        line_end: 507
        line_start: 507
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 537
      start: 501
    functionDepth: 12
    functionLinenumber: 501
    functionLinenumberEnd: 537
    functionName: casync_getxattr
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - memcpy
    - seek_to_path
    - ca_sync_current_xattr
    - streq
    - assert
    linkageType: ''
    returnType: int
    signature: int casync_getxattr(const char *path, const char *name, char *buffer,
      size_t size)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cafuse.c:545,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:546,1
    - Dst: seek_to_path
      Src: /src/casync/src/cafuse.c:548,1
    - Dst: ca_sync_current_xattr
      Src: /src/casync/src/cafuse.c:552,1
    - Dst: strlen
      Src: /src/casync/src/cafuse.c:559,1
    - Dst: ca_sync_current_xattr
      Src: /src/casync/src/cafuse.c:561,1
    - Dst: ca_sync_current_xattr
      Src: /src/casync/src/cafuse.c:570,1
    - Dst: stpcpy
      Src: /src/casync/src/cafuse.c:577,1
    - Dst: ca_sync_current_xattr
      Src: /src/casync/src/cafuse.c:579,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 3
    argNames:
    - path
    - list
    - size
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts:
    - condition: (path)
      pos:
        line_end: 544
        line_start: 544
        source_file: /src/casync/src/cafuse.c
    - condition: (list || size == 0)
      pos:
        line_end: 545
        line_start: 545
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 583
      start: 539
    functionDepth: 12
    functionLinenumber: 539
    functionLinenumberEnd: 583
    functionName: casync_listxattr
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - stpcpy
    - seek_to_path
    - strlen
    - ca_sync_current_xattr
    - assert
    linkageType: ''
    returnType: int
    signature: int casync_listxattr(const char *path, char *list, size_t size)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_get_feature_flags
      Src: /src/casync/src/cafuse.c:606,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:610,1
    - Dst: ca_sync_step
      Src: /src/casync/src/cafuse.c:612,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:614,1
    - Dst: log_error
      Src: /src/casync/src/cafuse.c:619,1
    - Dst: sync_poll_sigset
      Src: /src/casync/src/cafuse.c:633,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:637,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:641,1
    - Dst: ca_with_feature_flags_format
      Src: /src/casync/src/cafuse.c:649,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:651,1
    - Dst: log_error
      Src: /src/casync/src/cafuse.c:653,1
    - Dst: free
      Src: /src/casync/src/cafuse.c:654,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (false)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 657
      start: 598
    functionDepth: 10
    functionLinenumber: 598
    functionLinenumberEnd: 657
    functionName: feature_flags_warning
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - ca_sync_step
    - ca_sync_get_feature_flags
    - log_error_errno
    - ca_with_feature_flags_format
    - free
    - assert
    - sync_poll_sigset
    - log_error
    linkageType: ''
    returnType: int
    signature: int feature_flags_warning(CaSync *s)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cafuse.c:675,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:676,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:678,1
    - Dst: assert
      Src: /src/casync/src/cafuse.c:679,1
    - Dst: geteuid
      Src: /src/casync/src/cafuse.c:682,1
    - Dst: strjoina
      Src: /src/casync/src/cafuse.c:683,1
    - Dst: strjoina
      Src: /src/casync/src/cafuse.c:685,1
    - Dst: fuse_mount
      Src: /src/casync/src/cafuse.c:691,1
    - Dst: abs
      Src: /src/casync/src/cafuse.c:693,1
    - Dst: mkdir
      Src: /src/casync/src/cafuse.c:696,1
    - Dst: log_error
      Src: /src/casync/src/cafuse.c:698,1
    - Dst: fuse_mount
      Src: /src/casync/src/cafuse.c:703,1
    - Dst: abs
      Src: /src/casync/src/cafuse.c:704,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:708,1
    - Dst: fuse_new
      Src: /src/casync/src/cafuse.c:714,1
    - Dst: abs
      Src: /src/casync/src/cafuse.c:716,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:717,1
    - Dst: install_exit_handler
      Src: /src/casync/src/cafuse.c:722,1
    - Dst: printf
      Src: /src/casync/src/cafuse.c:725,1
    - Dst: feature_flags_warning
      Src: /src/casync/src/cafuse.c:727,1
    - Dst: send_notify
      Src: /src/casync/src/cafuse.c:736,1
    - Dst: fuse_loop
      Src: /src/casync/src/cafuse.c:738,1
    - Dst: IN_SET
      Src: /src/casync/src/cafuse.c:739,1
    - Dst: log_error_errno
      Src: /src/casync/src/cafuse.c:742,1
    - Dst: install_exit_handler
      Src: /src/casync/src/cafuse.c:748,1
    - Dst: fuse_unmount
      Src: /src/casync/src/cafuse.c:751,1
    - Dst: fuse_destroy
      Src: /src/casync/src/cafuse.c:754,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 74
    argCount: 4
    argNames:
    - s
    - what
    - where
    - do_mkdir
    argTypes:
    - CaSync*
    - char*
    - char*
    - bool
    assertStmts:
    - condition: (where)
      pos:
        line_end: 675
        line_start: 675
        source_file: /src/casync/src/cafuse.c
    - condition: (!instance)
      pos:
        line_end: 678
        line_start: 678
        source_file: /src/casync/src/cafuse.c
    - condition: (s)
      pos:
        line_end: 674
        line_start: 674
        source_file: /src/casync/src/cafuse.c
    - condition: (!fuse)
      pos:
        line_end: 677
        line_start: 677
        source_file: /src/casync/src/cafuse.c
    constantsTouched: []
    func_position:
      end: 761
      start: 659
    functionDepth: 11
    functionLinenumber: 659
    functionLinenumberEnd: 761
    functionName: ca_fuse_run
    functionSourceFile: /src/casync/src/cafuse.c
    functionUses: 0
    functionsReached:
    - feature_flags_warning
    - strjoina
    - fuse_destroy
    - IN_SET
    - send_notify
    - abs
    - fuse_mount
    - log_error_errno
    - fuse_loop
    - mkdir
    - printf
    - geteuid
    - install_exit_handler
    - fuse_new
    - fuse_unmount
    - assert
    - log_error
    linkageType: ''
    returnType: int
    signature: int ca_fuse_run(CaSync *s, const char *what, const char *where, bool
      do_mkdir)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/dirent-util.c:28,1
    - Dst: IN_SET
      Src: /src/casync/src/dirent-util.c:30,1
    - Dst: endswith
      Src: /src/casync/src/dirent-util.c:39,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - de
    - suffix
    argTypes:
    - struct dirent*
    - char*
    assertStmts:
    - condition: (de)
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/casync/src/dirent-util.c
    constantsTouched: []
    func_position:
      end: 40
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 40
    functionName: dirent_is_file_with_suffix
    functionSourceFile: /src/casync/src/dirent-util.c
    functionUses: 1
    functionsReached:
    - assert
    - endswith
    - IN_SET
    linkageType: ''
    returnType: bool
    signature: bool dirent_is_file_with_suffix(const struct dirent *de, const char
      *suffix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: readdir
      Src: /src/casync/src/dirent-util.c:46,1
    - Dst: dot_or_dot_dot
      Src: /src/casync/src/dirent-util.c:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - dirp
    argTypes:
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 51
    functionName: readdir_no_dot
    functionSourceFile: /src/casync/src/dirent-util.c
    functionUses: 0
    functionsReached:
    - readdir
    - dot_or_dot_dot
    linkageType: ''
    returnType: struct dirent
    signature: struct dirent * readdir_no_dot(DIR *dirp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/caorigin.c:17,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ret
    argTypes:
    - CaOrigin**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 24
    functionName: ca_origin_new
    functionSourceFile: /src/casync/src/caorigin.c
    functionUses: 6
    functionsReached:
    - new0
    linkageType: ''
    returnType: int
    signature: int ca_origin_new(CaOrigin **ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_location_unref
      Src: /src/casync/src/caorigin.c:33,1
    - Dst: ca_origin_get
      Src: /src/casync/src/caorigin.c:33,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - origin
    argTypes:
    - CaOrigin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 37
    functionName: ca_origin_flush
    functionSourceFile: /src/casync/src/caorigin.c
    functionUses: 1
    functionsReached:
    - ca_origin_get
    - ca_location_unref
    linkageType: ''
    returnType: void
    signature: void ca_origin_flush(CaOrigin *origin)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_origin_flush
      Src: /src/casync/src/caorigin.c:43,1
    - Dst: free
      Src: /src/casync/src/caorigin.c:44,1
    - Dst: mfree
      Src: /src/casync/src/caorigin.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - origin
    argTypes:
    - CaOrigin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 47
    functionName: ca_origin_unref
    functionSourceFile: /src/casync/src/caorigin.c
    functionUses: 9
    functionsReached:
    - mfree
    - ca_origin_flush
    - free
    linkageType: ''
    returnType: CaOrigin
    signature: CaOrigin * ca_origin_unref(CaOrigin *origin)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caorigin.c:61,1
    - Dst: ca_location_ref
      Src: /src/casync/src/caorigin.c:63,1
    - Dst: ca_location_merge
      Src: /src/casync/src/caorigin.c:70,1
    - Dst: ca_location_merge
      Src: /src/casync/src/caorigin.c:72,1
    - Dst: GREEDY_REALLOC
      Src: /src/casync/src/caorigin.c:81,1
    - Dst: ca_location_ref
      Src: /src/casync/src/caorigin.c:84,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - origin
    - location
    argTypes:
    - CaOrigin*
    - CaLocation*
    assertStmts:
    - condition: (origin->n_bytes == 0)
      pos:
        line_end: 60
        line_start: 60
        source_file: /src/casync/src/caorigin.c
    constantsTouched: []
    func_position:
      end: 89
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 89
    functionName: ca_origin_put
    functionSourceFile: /src/casync/src/caorigin.c
    functionUses: 4
    functionsReached:
    - assert
    - ca_location_merge
    - ca_location_ref
    - GREEDY_REALLOC
    linkageType: ''
    returnType: int
    signature: int ca_origin_put(CaOrigin *origin, CaLocation *location)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_origin_items
      Src: /src/casync/src/caorigin.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - origin
    - i
    argTypes:
    - CaOrigin*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 100
    functionName: ca_origin_get
    functionSourceFile: /src/casync/src/caorigin.c
    functionUses: 4
    functionsReached:
    - ca_origin_items
    linkageType: ''
    returnType: CaLocation
    signature: CaLocation * ca_origin_get(CaOrigin *origin, size_t i)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ca_origin_bytes
      Src: /src/casync/src/caorigin.c:111,1
    - Dst: ca_origin_items
      Src: /src/casync/src/caorigin.c:113,1
    - Dst: newa
      Src: /src/casync/src/caorigin.c:122,1
    - Dst: ca_location_ref
      Src: /src/casync/src/caorigin.c:125,1
    - Dst: ca_origin_get
      Src: /src/casync/src/caorigin.c:125,1
    - Dst: ca_origin_get
      Src: /src/casync/src/caorigin.c:135,1
    - Dst: assert
      Src: /src/casync/src/caorigin.c:137,1
    - Dst: assert
      Src: /src/casync/src/caorigin.c:138,1
    - Dst: ca_origin_put
      Src: /src/casync/src/caorigin.c:141,1
    - Dst: ca_location_ref
      Src: /src/casync/src/caorigin.c:145,1
    - Dst: ca_location_patch_size
      Src: /src/casync/src/caorigin.c:148,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caorigin.c:150,1
    - Dst: ca_origin_put
      Src: /src/casync/src/caorigin.c:157,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caorigin.c:158,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caorigin.c:172,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 55
    argCount: 3
    argNames:
    - origin
    - other
    - n_bytes
    argTypes:
    - CaOrigin*
    - CaOrigin*
    - uint64_t
    assertStmts:
    - condition: (l)
      pos:
        line_end: 136
        line_start: 136
        source_file: /src/casync/src/caorigin.c
    - condition: (l->size != UINT64_MAX)
      pos:
        line_end: 137
        line_start: 137
        source_file: /src/casync/src/caorigin.c
    constantsTouched: []
    func_position:
      end: 176
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 176
    functionName: ca_origin_concat
    functionSourceFile: /src/casync/src/caorigin.c
    functionUses: 3
    functionsReached:
    - ca_origin_items
    - ca_location_ref
    - ca_location_patch_size
    - ca_origin_put
    - ca_location_unref
    - assert
    - ca_origin_bytes
    - ca_origin_get
    - newa
    linkageType: ''
    returnType: int
    signature: int ca_origin_concat(CaOrigin *origin, CaOrigin *other, uint64_t n_bytes)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_origin_items
      Src: /src/casync/src/caorigin.c:184,1
    - Dst: ca_origin_items
      Src: /src/casync/src/caorigin.c:186,1
    - Dst: ca_origin_flush
      Src: /src/casync/src/caorigin.c:187,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caorigin.c:192,1
    - Dst: assert
      Src: /src/casync/src/caorigin.c:195,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caorigin.c:198,1
    - Dst: memmove
      Src: /src/casync/src/caorigin.c:202,1
    - Dst: assert
      Src: /src/casync/src/caorigin.c:204,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - origin
    - n_drop
    argTypes:
    - CaOrigin*
    - size_t
    assertStmts:
    - condition: (origin->others[i-1]->size != UINT64_MAX)
      pos:
        line_end: 194
        line_start: 194
        source_file: /src/casync/src/caorigin.c
    - condition: (origin->n_bytes > drop_bytes)
      pos:
        line_end: 203
        line_start: 203
        source_file: /src/casync/src/caorigin.c
    constantsTouched: []
    func_position:
      end: 210
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 210
    functionName: ca_origin_advance_items
    functionSourceFile: /src/casync/src/caorigin.c
    functionUses: 0
    functionsReached:
    - ca_origin_items
    - ca_location_unref
    - assert
    - ca_origin_flush
    - memmove
    linkageType: ''
    returnType: int
    signature: int ca_origin_advance_items(CaOrigin *origin, size_t n_drop)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_origin_bytes
      Src: /src/casync/src/caorigin.c:218,1
    - Dst: ca_origin_bytes
      Src: /src/casync/src/caorigin.c:220,1
    - Dst: ca_origin_flush
      Src: /src/casync/src/caorigin.c:221,1
    - Dst: ca_origin_get
      Src: /src/casync/src/caorigin.c:228,1
    - Dst: assert
      Src: /src/casync/src/caorigin.c:230,1
    - Dst: assert
      Src: /src/casync/src/caorigin.c:231,1
    - Dst: ca_origin_advance_items
      Src: /src/casync/src/caorigin.c:240,1
    - Dst: assert
      Src: /src/casync/src/caorigin.c:244,1
    - Dst: assert
      Src: /src/casync/src/caorigin.c:245,1
    - Dst: assert
      Src: /src/casync/src/caorigin.c:246,1
    - Dst: ca_location_advance
      Src: /src/casync/src/caorigin.c:248,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - origin
    - n_bytes
    argTypes:
    - CaOrigin*
    - uint64_t
    assertStmts:
    - condition: (l)
      pos:
        line_end: 229
        line_start: 229
        source_file: /src/casync/src/caorigin.c
    - condition: (l->size != UINT64_MAX)
      pos:
        line_end: 230
        line_start: 230
        source_file: /src/casync/src/caorigin.c
    - condition: (origin->n_bytes > n_bytes)
      pos:
        line_end: 243
        line_start: 243
        source_file: /src/casync/src/caorigin.c
    - condition: (origin->first)
      pos:
        line_end: 244
        line_start: 244
        source_file: /src/casync/src/caorigin.c
    - condition: (origin->first->size > n_bytes)
      pos:
        line_end: 245
        line_start: 245
        source_file: /src/casync/src/caorigin.c
    constantsTouched: []
    func_position:
      end: 254
      start: 212
    functionDepth: 3
    functionLinenumber: 212
    functionLinenumberEnd: 254
    functionName: ca_origin_advance_bytes
    functionSourceFile: /src/casync/src/caorigin.c
    functionUses: 4
    functionsReached:
    - ca_location_advance
    - ca_origin_flush
    - ca_origin_advance_items
    - assert
    - ca_origin_bytes
    - ca_origin_get
    linkageType: ''
    returnType: int
    signature: int ca_origin_advance_bytes(CaOrigin *origin, uint64_t n_bytes)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_origin_items
      Src: /src/casync/src/caorigin.c:262,1
    - Dst: ca_location_format
      Src: /src/casync/src/caorigin.c:265,1
    - Dst: ca_origin_get
      Src: /src/casync/src/caorigin.c:265,1
    - Dst: fputs
      Src: /src/casync/src/caorigin.c:270,1
    - Dst: fputs
      Src: /src/casync/src/caorigin.c:272,1
    - Dst: fputc
      Src: /src/casync/src/caorigin.c:275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - f
    - origin
    argTypes:
    - FILE*
    - CaOrigin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 277
    functionName: ca_origin_dump
    functionSourceFile: /src/casync/src/caorigin.c
    functionUses: 1
    functionsReached:
    - fputc
    - ca_location_format
    - ca_origin_items
    - fputs
    - ca_origin_get
    linkageType: ''
    returnType: int
    signature: int ca_origin_dump(FILE *f, CaOrigin *origin)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_location_patch_size
      Src: /src/casync/src/caorigin.c:291,1
    - Dst: ca_location_patch_size
      Src: /src/casync/src/caorigin.c:299,1
    - Dst: ca_location_new_void
      Src: /src/casync/src/caorigin.c:307,1
    - Dst: ca_origin_put
      Src: /src/casync/src/caorigin.c:311,1
    - Dst: ca_location_unref
      Src: /src/casync/src/caorigin.c:312,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - origin
    - n_bytes
    argTypes:
    - CaOrigin*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 279
    functionDepth: 2
    functionLinenumber: 279
    functionLinenumberEnd: 323
    functionName: ca_origin_put_void
    functionSourceFile: /src/casync/src/caorigin.c
    functionUses: 1
    functionsReached:
    - ca_location_patch_size
    - ca_origin_put
    - ca_location_new_void
    - ca_location_unref
    linkageType: ''
    returnType: int
    signature: int ca_origin_put_void(CaOrigin *origin, uint64_t n_bytes)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/caorigin.c:326,1
    - Dst: ca_origin_new
      Src: /src/casync/src/caorigin.c:334,1
    - Dst: ca_origin_concat
      Src: /src/casync/src/caorigin.c:338,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - origin
    - n_bytes
    - ret
    argTypes:
    - CaOrigin*
    - uint64_t
    - CaOrigin**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 325
    functionDepth: 3
    functionLinenumber: 325
    functionLinenumberEnd: 346
    functionName: ca_origin_extract_bytes
    functionSourceFile: /src/casync/src/caorigin.c
    functionUses: 1
    functionsReached:
    - ca_origin_concat
    - ca_origin_new
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_origin_extract_bytes(CaOrigin *origin, uint64_t n_bytes, CaOrigin
      **ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_block_device_unref
      Src: /src/casync/src/canbd.h:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaBlockDevice**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: ca_block_device_unrefp
    functionSourceFile: /src/casync/src/canbd.h
    functionUses: 0
    functionsReached:
    - ca_block_device_unref
    linkageType: ''
    returnType: void
    signature: void ca_block_device_unrefp(CaBlockDevice **d)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-http.c:43,1
    - Dst: curl_easy_perform
      Src: /src/casync/src/casync-http.c:47,1
    - Dst: log_info
      Src: /src/casync/src/casync-http.c:61,1
    - Dst: usleep
      Src: /src/casync/src/casync-http.c:62,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - curl
    argTypes:
    - CURL*
    assertStmts:
    - condition: (curl)
      pos:
        line_end: 42
        line_start: 42
        source_file: /src/casync/src/casync-http.c
    constantsTouched: []
    func_position:
      end: 74
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 74
    functionName: robust_curl_easy_perform
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 0
    functionsReached:
    - curl_easy_perform
    - assert
    - log_info
    - usleep
    linkageType: ''
    returnType: CURLcode
    signature: CURLcode robust_curl_easy_perform(CURL *curl)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-http.c:79,1
    - Dst: ca_remote_can_put_chunk
      Src: /src/casync/src/casync-http.c:87,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:91,1
    - Dst: ca_remote_can_put_index
      Src: /src/casync/src/casync-http.c:99,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:103,1
    - Dst: ca_remote_can_put_archive
      Src: /src/casync/src/casync-http.c:111,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:115,1
    - Dst: ca_remote_has_pending_requests
      Src: /src/casync/src/casync-http.c:123,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:127,1
    - Dst: ca_remote_has_unwritten
      Src: /src/casync/src/casync-http.c:134,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:138,1
    - Dst: assert
      Src: /src/casync/src/casync-http.c:148,1
    - Dst: ca_remote_step
      Src: /src/casync/src/casync-http.c:151,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:160,1
    - Dst: ca_remote_poll
      Src: /src/casync/src/casync-http.c:165,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:167,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 68
    argCount: 2
    argNames:
    - rr
    - until
    argTypes:
    - CaRemote*
    - ProcessUntil
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/casync/src/casync-http.c
    - condition: (false)
      pos:
        line_end: 147
        line_start: 147
        source_file: /src/casync/src/casync-http.c
    constantsTouched: []
    func_position:
      end: 169
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 169
    functionName: process_remote
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 0
    functionsReached:
    - ca_remote_can_put_chunk
    - ca_remote_has_unwritten
    - ca_remote_has_pending_requests
    - log_error_errno
    - ca_remote_can_put_archive
    - assert
    - ca_remote_step
    - ca_remote_poll
    - ca_remote_can_put_index
    linkageType: ''
    returnType: int
    signature: int process_remote(CaRemote *rr, ProcessUntil until)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-http.c:174,1
    - Dst: process_remote
      Src: /src/casync/src/casync-http.c:176,1
    - Dst: ca_remote_put_index
      Src: /src/casync/src/casync-http.c:180,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/casync-http.c:180,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync-http.c:180,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - rr
    - buffer
    argTypes:
    - CaRemote*
    - ReallocBuffer*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 173
        line_start: 173
        source_file: /src/casync/src/casync-http.c
    constantsTouched: []
    func_position:
      end: 187
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 187
    functionName: write_index
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_data
    - ca_remote_put_index
    - log_error
    - process_remote
    - assert
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int write_index(CaRemote *rr, ReallocBuffer *buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-http.c:192,1
    - Dst: process_remote
      Src: /src/casync/src/casync-http.c:194,1
    - Dst: ca_remote_put_index_eof
      Src: /src/casync/src/casync-http.c:198,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 191
        line_start: 191
        source_file: /src/casync/src/casync-http.c
    constantsTouched: []
    func_position:
      end: 203
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 203
    functionName: write_index_eof
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 0
    functionsReached:
    - process_remote
    - assert
    - log_error_errno
    - ca_remote_put_index_eof
    linkageType: ''
    returnType: int
    signature: int write_index_eof(CaRemote *rr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: process_remote
      Src: /src/casync/src/casync-http.c:212,1
    - Dst: ca_remote_put_archive
      Src: /src/casync/src/casync-http.c:216,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:218,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - buffer
    - size
    - nmemb
    - userdata
    argTypes:
    - void*
    - size_t
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 223
    functionName: write_archive
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 1
    functionsReached:
    - process_remote
    - ca_remote_put_archive
    - log_error
    linkageType: ''
    returnType: size_t
    signature: size_t write_archive(const void *buffer, size_t size, size_t nmemb,
      void *userdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-http.c:228,1
    - Dst: process_remote
      Src: /src/casync/src/casync-http.c:230,1
    - Dst: ca_remote_put_archive_eof
      Src: /src/casync/src/casync-http.c:234,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 227
        line_start: 227
        source_file: /src/casync/src/casync-http.c
    constantsTouched: []
    func_position:
      end: 239
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 239
    functionName: write_archive_eof
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 0
    functionsReached:
    - process_remote
    - assert
    - ca_remote_put_archive_eof
    - log_error_errno
    linkageType: ''
    returnType: int
    signature: int write_archive_eof(CaRemote *rr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync-http.c:247,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync-http.c:248,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:249,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:254,1
    - Dst: realloc_buffer_append
      Src: /src/casync/src/casync-http.c:258,1
    - Dst: log_oom
      Src: /src/casync/src/casync-http.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - ptr
    - size
    - nmemb
    - userdata
    argTypes:
    - void*
    - size_t
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 241
    functionDepth: 4
    functionLinenumber: 241
    functionLinenumberEnd: 264
    functionName: write_buffer
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_append
    - log_oom
    - log_error
    - realloc_buffer_size
    linkageType: ''
    returnType: size_t
    signature: size_t write_buffer(const void *ptr, size_t size, size_t nmemb, void
      *userdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_compressed_chunk_suffix
      Src: /src/casync/src/casync-http.c:273,1
    - Dst: strcspn
      Src: /src/casync/src/casync-http.c:275,1
    - Dst: strlen
      Src: /src/casync/src/casync-http.c:279,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/casync-http.c:283,1
    - Dst: strcpy
      Src: /src/casync/src/casync-http.c:285,1
    - Dst: mempcpy
      Src: /src/casync/src/casync-http.c:285,1
    - Dst: mempcpy
      Src: /src/casync/src/casync-http.c:285,1
    - Dst: mempcpy
      Src: /src/casync/src/casync-http.c:285,1
    - Dst: mempcpy
      Src: /src/casync/src/casync-http.c:285,1
    - Dst: mempcpy
      Src: /src/casync/src/casync-http.c:285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - store_url
    - id
    argTypes:
    - char*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 288
    functionName: chunk_url
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 0
    functionsReached:
    - strcspn
    - ca_compressed_chunk_suffix
    - strlen
    - ca_chunk_id_format
    - mempcpy
    - strcpy
    linkageType: ''
    returnType: char
    signature: char *chunk_url(const char *store_url, const CaChunkID *id)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-http.c:297,1
    - Dst: assert
      Src: /src/casync/src/casync-http.c:298,1
    - Dst: assert
      Src: /src/casync/src/casync-http.c:299,1
    - Dst: assert
      Src: /src/casync/src/casync-http.c:300,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:302,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:303,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:307,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:308,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:312,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:313,1
    - Dst: log_debug
      Src: /src/casync/src/casync-http.c:317,1
    - Dst: robust_curl_easy_perform
      Src: /src/casync/src/casync-http.c:319,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:320,1
    - Dst: curl_easy_getinfo
      Src: /src/casync/src/casync-http.c:324,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:325,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-http.c:329,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:333,1
    - Dst: asprintf
      Src: /src/casync/src/casync-http.c:335,1
    - Dst: log_oom
      Src: /src/casync/src/casync-http.c:336,1
    - Dst: ca_remote_abort
      Src: /src/casync/src/casync-http.c:338,1
    - Dst: free
      Src: /src/casync/src/casync-http.c:339,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:347,1
    - Dst: asprintf
      Src: /src/casync/src/casync-http.c:349,1
    - Dst: log_oom
      Src: /src/casync/src/casync-http.c:350,1
    - Dst: ca_remote_abort
      Src: /src/casync/src/casync-http.c:352,1
    - Dst: free
      Src: /src/casync/src/casync-http.c:353,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:359,1
    - Dst: asprintf
      Src: /src/casync/src/casync-http.c:361,1
    - Dst: log_oom
      Src: /src/casync/src/casync-http.c:362,1
    - Dst: ca_remote_abort
      Src: /src/casync/src/casync-http.c:364,1
    - Dst: free
      Src: /src/casync/src/casync-http.c:365,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 54
    argCount: 4
    argNames:
    - rr
    - curl
    - url
    - userdata
    argTypes:
    - CaRemote*
    - CURL*
    - char*
    - void*
    assertStmts:
    - condition: (curl)
      pos:
        line_end: 296
        line_start: 296
        source_file: /src/casync/src/casync-http.c
    - condition: (url)
      pos:
        line_end: 297
        line_start: 297
        source_file: /src/casync/src/casync-http.c
    - condition: (callback)
      pos:
        line_end: 298
        line_start: 298
        source_file: /src/casync/src/casync-http.c
    - condition: (userdata)
      pos:
        line_end: 299
        line_start: 299
        source_file: /src/casync/src/casync-http.c
    constantsTouched: []
    func_position:
      end: 370
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 370
    functionName: acquire_file
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 0
    functionsReached:
    - curl_easy_setopt
    - IN_SET
    - log_oom
    - free
    - log_debug
    - asprintf
    - ca_remote_abort
    - curl_easy_getinfo
    - assert
    - robust_curl_easy_perform
    - log_error
    linkageType: ''
    returnType: int
    signature: "int acquire_file(CaRemote *rr,\n                        CURL *curl,\n
      \                       const char *url,\n                        size_t (*callback)(const
      void *p, size_t size, size_t nmemb, void *userdata),\n                        void
      *userdata)"
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-http.c:376,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-http.c:377,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:383,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-http.c:389,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-http.c:390,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-http.c:391,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-http.c:392,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:397,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:402,1
    - Dst: ca_remote_new
      Src: /src/casync/src/casync-http.c:406,1
    - Dst: log_oom
      Src: /src/casync/src/casync-http.c:408,1
    - Dst: ca_remote_set_local_feature_flags
      Src: /src/casync/src/casync-http.c:412,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:417,1
    - Dst: ca_remote_set_io_fds
      Src: /src/casync/src/casync-http.c:421,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:423,1
    - Dst: curl_easy_init
      Src: /src/casync/src/casync-http.c:427,1
    - Dst: log_oom
      Src: /src/casync/src/casync-http.c:429,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:433,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:434,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:439,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:440,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:445,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:447,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:455,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:456,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:460,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:461,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:466,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:467,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:473,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:474,1
    - Dst: acquire_file
      Src: /src/casync/src/casync-http.c:480,1
    - Dst: write_archive_eof
      Src: /src/casync/src/casync-http.c:486,1
    - Dst: acquire_file
      Src: /src/casync/src/casync-http.c:492,1
    - Dst: write_index
      Src: /src/casync/src/casync-http.c:498,1
    - Dst: write_index_eof
      Src: /src/casync/src/casync-http.c:502,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/casync-http.c:506,1
    - Dst: log_info
      Src: /src/casync/src/casync-http.c:514,1
    - Dst: process_remote
      Src: /src/casync/src/casync-http.c:522,1
    - Dst: ca_remote_next_request
      Src: /src/casync/src/casync-http.c:530,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:534,1
    - Dst: free
      Src: /src/casync/src/casync-http.c:545,1
    - Dst: chunk_url
      Src: /src/casync/src/casync-http.c:546,1
    - Dst: log_oom
      Src: /src/casync/src/casync-http.c:548,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:552,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:553,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:558,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:559,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:564,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:565,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:571,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:572,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:577,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:578,1
    - Dst: curl_easy_setopt
      Src: /src/casync/src/casync-http.c:584,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:585,1
    - Dst: log_debug
      Src: /src/casync/src/casync-http.c:590,1
    - Dst: robust_curl_easy_perform
      Src: /src/casync/src/casync-http.c:592,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:593,1
    - Dst: curl_easy_getinfo
      Src: /src/casync/src/casync-http.c:598,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:599,1
    - Dst: process_remote
      Src: /src/casync/src/casync-http.c:604,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-http.c:612,1
    - Dst: ca_remote_put_chunk
      Src: /src/casync/src/casync-http.c:616,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/casync-http.c:616,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync-http.c:616,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:618,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:624,1
    - Dst: ca_remote_put_missing
      Src: /src/casync/src/casync-http.c:626,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:628,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/casync-http.c:633,1
    - Dst: process_remote
      Src: /src/casync/src/casync-http.c:635,1
    - Dst: process_remote
      Src: /src/casync/src/casync-http.c:645,1
    - Dst: curl_easy_cleanup
      Src: /src/casync/src/casync-http.c:649,1
    CyclomaticComplexity: 98
    EdgeCount: 98
    ICount: 250
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 372
    functionDepth: 3
    functionLinenumber: 372
    functionLinenumberEnd: 652
    functionName: run
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 1
    functionsReached:
    - ca_remote_next_request
    - curl_easy_setopt
    - IN_SET
    - chunk_url
    - log_error_errno
    - write_index_eof
    - log_debug
    - realloc_buffer_empty
    - empty_or_dash_to_null
    - robust_curl_easy_perform
    - ca_remote_put_missing
    - _cleanup_
    - write_index
    - log_oom
    - log_error
    - curl_easy_getinfo
    - write_archive_eof
    - ca_remote_set_local_feature_flags
    - log_info
    - ca_remote_set_io_fds
    - realloc_buffer_data
    - curl_easy_cleanup
    - ca_remote_put_chunk
    - process_remote
    - realloc_buffer_size
    - ca_remote_new
    - acquire_file
    - curl_easy_init
    - free
    linkageType: ''
    returnType: int
    signature: int run(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/casync/src/casync-http.c:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 654
    functionDepth: 0
    functionLinenumber: 654
    functionLinenumberEnd: 656
    functionName: help
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void help(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-http.c:674,1
    - Dst: assert
      Src: /src/casync/src/casync-http.c:675,1
    - Dst: strstr
      Src: /src/casync/src/casync-http.c:677,1
    - Dst: strstr
      Src: /src/casync/src/casync-http.c:679,1
    - Dst: strstr
      Src: /src/casync/src/casync-http.c:681,1
    - Dst: strstr
      Src: /src/casync/src/casync-http.c:683,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:686,1
    - Dst: getenv_bool
      Src: /src/casync/src/casync-http.c:690,1
    - Dst: getopt_long
      Src: /src/casync/src/casync-http.c:693,1
    - Dst: help
      Src: /src/casync/src/casync-http.c:698,1
    - Dst: set_log_level_from_string
      Src: /src/casync/src/casync-http.c:702,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-http.c:704,1
    - Dst: strtoll
      Src: /src/casync/src/casync-http.c:715,1
    - Dst: assert
      Src: /src/casync/src/casync-http.c:722,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (argc >= 0)
      pos:
        line_end: 673
        line_start: 673
        source_file: /src/casync/src/casync-http.c
    - condition: (argv)
      pos:
        line_end: 674
        line_start: 674
        source_file: /src/casync/src/casync-http.c
    - condition: (false)
      pos:
        line_end: 721
        line_start: 721
        source_file: /src/casync/src/casync-http.c
    constantsTouched: []
    func_position:
      end: 727
      start: 658
    functionDepth: 3
    functionLinenumber: 658
    functionLinenumberEnd: 727
    functionName: parse_argv
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 0
    functionsReached:
    - getopt_long
    - strtoll
    - strstr
    - set_log_level_from_string
    - help
    - getenv_bool
    - log_error_errno
    - assert
    - log_error
    linkageType: ''
    returnType: int
    signature: int parse_argv(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 729
    functionDepth: 0
    functionLinenumber: 729
    functionLinenumberEnd: 731
    functionName: exit_signal_handler
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void exit_signal_handler(int signo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/src/casync-http.c:744,1
    - Dst: sigaction
      Src: /src/casync/src/casync-http.c:744,1
    - Dst: assert_se
      Src: /src/casync/src/casync-http.c:745,1
    - Dst: sigaction
      Src: /src/casync/src/casync-http.c:745,1
    - Dst: assert_se
      Src: /src/casync/src/casync-http.c:746,1
    - Dst: sigaction
      Src: /src/casync/src/casync-http.c:746,1
    - Dst: assert_se
      Src: /src/casync/src/casync-http.c:747,1
    - Dst: sigaction
      Src: /src/casync/src/casync-http.c:747,1
    - Dst: parse_argv
      Src: /src/casync/src/casync-http.c:749,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:754,1
    - Dst: streq
      Src: /src/casync/src/casync-http.c:759,1
    - Dst: run
      Src: /src/casync/src/casync-http.c:760,1
    - Dst: log_error
      Src: /src/casync/src/casync-http.c:762,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 768
    functionName: main
    functionSourceFile: /src/casync/src/casync-http.c
    functionUses: 0
    functionsReached:
    - run
    - sigaction
    - assert_se
    - parse_argv
    - streq
    - log_error
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: STR_IN_SET
      Src: /src/casync/src/log.c:14,1
    - Dst: STR_IN_SET
      Src: /src/casync/src/log.c:16,1
    - Dst: STR_IN_SET
      Src: /src/casync/src/log.c:18,1
    - Dst: STR_IN_SET
      Src: /src/casync/src/log.c:20,1
    - Dst: STR_IN_SET
      Src: /src/casync/src/log.c:22,1
    - Dst: STR_IN_SET
      Src: /src/casync/src/log.c:24,1
    - Dst: STR_IN_SET
      Src: /src/casync/src/log.c:26,1
    - Dst: STR_IN_SET
      Src: /src/casync/src/log.c:28,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 32
    functionName: level_from_string
    functionSourceFile: /src/casync/src/log.c
    functionUses: 1
    functionsReached:
    - STR_IN_SET
    linkageType: ''
    returnType: int
    signature: int level_from_string(const char *str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/casync/src/log.c:40,1
    - Dst: set_log_level_from_string
      Src: /src/casync/src/log.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: get_log_level
    functionSourceFile: /src/casync/src/log.c
    functionUses: 0
    functionsReached:
    - getenv
    - set_log_level_from_string
    linkageType: ''
    returnType: int
    signature: int get_log_level(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: set_log_level
    functionSourceFile: /src/casync/src/log.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_log_level(int level)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: level_from_string
      Src: /src/casync/src/log.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 61
    functionName: set_log_level_from_string
    functionSourceFile: /src/casync/src/log.c
    functionUses: 2
    functionsReached:
    - level_from_string
    linkageType: ''
    returnType: int
    signature: int set_log_level_from_string(const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_log_level
      Src: /src/casync/src/log.c:72,1
    - Dst: abs
      Src: /src/casync/src/log.c:73,1
    - Dst: endswith
      Src: /src/casync/src/log.c:75,1
    - Dst: strjoina
      Src: /src/casync/src/log.c:78,1
    - Dst: abs
      Src: /src/casync/src/log.c:81,1
    - Dst: vfprintf
      Src: /src/casync/src/log.c:85,1
    - Dst: abs
      Src: /src/casync/src/log.c:89,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - level
    - error
    - format
    - ap
    argTypes:
    - int
    - int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 90
    functionName: log_fullv
    functionSourceFile: /src/casync/src/log.c
    functionUses: 0
    functionsReached:
    - endswith
    - strjoina
    - abs
    - get_log_level
    - vfprintf
    linkageType: ''
    returnType: int
    signature: "int log_fullv(\n                int level,\n                int error,\n
      \               const char *format,\n                va_list ap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/casync/src/log.c:96,1
    - Dst: log_fullv
      Src: /src/casync/src/log.c:97,1
    - Dst: va_end
      Src: /src/casync/src/log.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - error
    - format
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 101
    functionName: log_info_errno
    functionSourceFile: /src/casync/src/log.c
    functionUses: 0
    functionsReached:
    - va_end
    - log_fullv
    - va_start
    linkageType: ''
    returnType: int
    signature: int log_info_errno(int error, const char* format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/casync/src/log.c:107,1
    - Dst: log_fullv
      Src: /src/casync/src/log.c:108,1
    - Dst: va_end
      Src: /src/casync/src/log.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - error
    - format
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 103
    functionDepth: 3
    functionLinenumber: 103
    functionLinenumberEnd: 112
    functionName: log_error_errno
    functionSourceFile: /src/casync/src/log.c
    functionUses: 20
    functionsReached:
    - va_end
    - log_fullv
    - va_start
    linkageType: ''
    returnType: int
    signature: int log_error_errno(int error, const char* format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/casync/src/log.c:118,1
    - Dst: log_fullv
      Src: /src/casync/src/log.c:119,1
    - Dst: va_end
      Src: /src/casync/src/log.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - error
    - format
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 114
    functionDepth: 3
    functionLinenumber: 114
    functionLinenumberEnd: 123
    functionName: log_debug_errno
    functionSourceFile: /src/casync/src/log.c
    functionUses: 13
    functionsReached:
    - va_end
    - log_fullv
    - va_start
    linkageType: ''
    returnType: int
    signature: int log_debug_errno(int error, const char* format, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/camatch.c:13,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:14,1
    - Dst: strlen_null
      Src: /src/casync/src/camatch.c:16,1
    - Dst: malloc0
      Src: /src/casync/src/camatch.c:18,1
    - Dst: memcpy
      Src: /src/casync/src/camatch.c:26,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - type
    - name
    argTypes:
    - CaMatchType
    - char*
    assertStmts:
    - condition: (type >= 0)
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/casync/src/camatch.c
    - condition: (type < _CA_MATCH_TYPE_MAX)
      pos:
        line_end: 13
        line_start: 13
        source_file: /src/casync/src/camatch.c
    constantsTouched: []
    func_position:
      end: 29
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 29
    functionName: ca_match_alloc
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 0
    functionsReached:
    - malloc0
    - assert
    - memcpy
    - strlen_null
    linkageType: ''
    returnType: CaMatch
    signature: CaMatch * ca_match_alloc(CaMatchType type, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_match_alloc
      Src: /src/casync/src/camatch.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 42
    functionName: ca_match_alloc_subtree
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 0
    functionsReached:
    - ca_match_alloc
    linkageType: ''
    returnType: CaMatch
    signature: CaMatch * ca_match_alloc_subtree(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/camatch.c:45,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:52,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:53,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:54,1
    - Dst: strchr
      Src: /src/casync/src/camatch.c:63,1
    - Dst: strspn
      Src: /src/casync/src/camatch.c:66,1
    - Dst: _cleanup_
      Src: /src/casync/src/camatch.c:69,1
    - Dst: strcspn
      Src: /src/casync/src/camatch.c:75,1
    - Dst: strndup
      Src: /src/casync/src/camatch.c:85,1
    - Dst: strspn
      Src: /src/casync/src/camatch.c:92,1
    - Dst: ca_match_alloc
      Src: /src/casync/src/camatch.c:94,1
    - Dst: isempty
      Src: /src/casync/src/camatch.c:94,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:108,1
    - Dst: ca_match_add_child
      Src: /src/casync/src/camatch.c:110,1
    - Dst: isempty
      Src: /src/casync/src/camatch.c:116,1
    - Dst: ca_match_add_child
      Src: /src/casync/src/camatch.c:126,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 2
    argNames:
    - parent
    - line
    argTypes:
    - CaMatch*
    - char*
    assertStmts:
    - condition: (parent->type == CA_MATCH_INNER)
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/casync/src/camatch.c
    - condition: (line)
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/casync/src/camatch.c
    - condition: (parent)
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/casync/src/camatch.c
    - condition: (current)
      pos:
        line_end: 107
        line_start: 107
        source_file: /src/casync/src/camatch.c
    constantsTouched: []
    func_position:
      end: 127
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 127
    functionName: parse_line
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 0
    functionsReached:
    - strcspn
    - strndup
    - ca_match_alloc
    - strspn
    - isempty
    - ca_match_add_child
    - strchr
    - assert
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int parse_line(CaMatch *parent, const char *line)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/camatch.c:130,1
    - Dst: _cleanup_
      Src: /src/casync/src/camatch.c:131,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:134,1
    - Dst: openat
      Src: /src/casync/src/camatch.c:136,1
    - Dst: fdopen
      Src: /src/casync/src/camatch.c:140,1
    - Dst: read_line
      Src: /src/casync/src/camatch.c:148,1
    - Dst: strstrip
      Src: /src/casync/src/camatch.c:154,1
    - Dst: isempty
      Src: /src/casync/src/camatch.c:156,1
    - Dst: ca_match_alloc_subtree
      Src: /src/casync/src/camatch.c:163,1
    - Dst: parse_line
      Src: /src/casync/src/camatch.c:168,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 3
    argNames:
    - dir_fd
    - filename
    - ret
    argTypes:
    - int
    - char*
    - CaMatch**
    assertStmts:
    - condition: (ret)
      pos:
        line_end: 133
        line_start: 133
        source_file: /src/casync/src/camatch.c
    constantsTouched: []
    func_position:
      end: 177
      start: 129
    functionDepth: 3
    functionLinenumber: 129
    functionLinenumberEnd: 177
    functionName: ca_match_new_from_file
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 1
    functionsReached:
    - read_line
    - openat
    - strstrip
    - fdopen
    - isempty
    - ca_match_alloc_subtree
    - parse_line
    - assert
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_match_new_from_file(int dir_fd, const char *filename, CaMatch
      **ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/camatch.c:180,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:184,1
    - Dst: ca_match_alloc_subtree
      Src: /src/casync/src/camatch.c:188,1
    - Dst: parse_line
      Src: /src/casync/src/camatch.c:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - list
    - ret
    argTypes:
    - char**
    - CaMatch**
    assertStmts:
    - condition: (ret)
      pos:
        line_end: 183
        line_start: 183
        source_file: /src/casync/src/camatch.c
    constantsTouched: []
    func_position:
      end: 202
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 202
    functionName: ca_match_new_from_strings
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 1
    functionsReached:
    - assert
    - ca_match_alloc_subtree
    - parse_line
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_match_new_from_strings(char **list, CaMatch **ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_match_alloc_subtree
      Src: /src/casync/src/camatch.c:188,1
    - Dst: parse_line
      Src: /src/casync/src/camatch.c:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 186
    functionDepth: 3
    functionLinenumber: 186
    functionLinenumberEnd: 196
    functionName: STRV_FOREACH
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 1
    functionsReached:
    - ca_match_alloc_subtree
    - parse_line
    linkageType: ''
    returnType: void
    signature: void STRV_FOREACH(i, list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/camatch.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - match
    argTypes:
    - CaMatch*
    assertStmts:
    - condition: (match->n_ref > 0)
      pos:
        line_end: 207
        line_start: 207
        source_file: /src/casync/src/camatch.c
    constantsTouched: []
    func_position:
      end: 212
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 212
    functionName: ca_match_ref
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: CaMatch
    signature: CaMatch * ca_match_ref(CaMatch *match)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/camatch.c:220,1
    - Dst: ca_match_unref
      Src: /src/casync/src/camatch.c:227,1
    - Dst: free
      Src: /src/casync/src/camatch.c:229,1
    - Dst: mfree
      Src: /src/casync/src/camatch.c:231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - match
    argTypes:
    - CaMatch*
    assertStmts:
    - condition: (match->n_ref > 0)
      pos:
        line_end: 219
        line_start: 219
        source_file: /src/casync/src/camatch.c
    constantsTouched: []
    func_position:
      end: 232
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 232
    functionName: ca_match_unref
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 3
    functionsReached:
    - assert
    - mfree
    - ca_match_unref
    - free
    linkageType: ''
    returnType: CaMatch
    signature: CaMatch * ca_match_unref(CaMatch *match)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/camatch.c:235,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:236,1
    - Dst: GREEDY_REALLOC
      Src: /src/casync/src/camatch.c:242,1
    - Dst: ca_match_ref
      Src: /src/casync/src/camatch.c:245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - match
    - child
    argTypes:
    - CaMatch*
    - CaMatch*
    assertStmts:
    - condition: (match)
      pos:
        line_end: 234
        line_start: 234
        source_file: /src/casync/src/camatch.c
    - condition: (child)
      pos:
        line_end: 235
        line_start: 235
        source_file: /src/casync/src/camatch.c
    constantsTouched: []
    func_position:
      end: 248
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 248
    functionName: ca_match_add_child
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 1
    functionsReached:
    - assert
    - ca_match_ref
    - GREEDY_REALLOC
    linkageType: ''
    returnType: int
    signature: int ca_match_add_child(CaMatch *match, CaMatch *child)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/camatch.c:251,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:255,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:260,1
    - Dst: ca_match_alloc
      Src: /src/casync/src/camatch.c:265,1
    - Dst: ca_match_add_child
      Src: /src/casync/src/camatch.c:273,1
    - Dst: ca_match_unref
      Src: /src/casync/src/camatch.c:278,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - match
    argTypes:
    - CaMatch**
    assertStmts:
    - condition: ((*match)->n_ref > 0)
      pos:
        line_end: 259
        line_start: 259
        source_file: /src/casync/src/camatch.c
    - condition: (match)
      pos:
        line_end: 254
        line_start: 254
        source_file: /src/casync/src/camatch.c
    constantsTouched: []
    func_position:
      end: 283
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 283
    functionName: ca_match_make_writable
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 0
    functionsReached:
    - ca_match_alloc
    - ca_match_unref
    - ca_match_add_child
    - assert
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_match_make_writable(CaMatch **match)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/camatch.c:289,1
    - Dst: ca_match_ref
      Src: /src/casync/src/camatch.c:295,1
    - Dst: streq
      Src: /src/casync/src/camatch.c:308,1
    - Dst: ca_match_make_writable
      Src: /src/casync/src/camatch.c:312,1
    - Dst: GREEDY_REALLOC
      Src: /src/casync/src/camatch.c:316,1
    - Dst: ca_match_ref
      Src: /src/casync/src/camatch.c:320,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - CaMatch**
    - CaMatch*
    assertStmts:
    - condition: (a)
      pos:
        line_end: 288
        line_start: 288
        source_file: /src/casync/src/camatch.c
    constantsTouched: []
    func_position:
      end: 324
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 324
    functionName: ca_match_merge
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 2
    functionsReached:
    - ca_match_make_writable
    - ca_match_ref
    - GREEDY_REALLOC
    - streq
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_match_merge(CaMatch **a, CaMatch *b)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/casync/src/camatch.c:339,1
    - Dst: compare_match
      Src: /src/casync/src/camatch.c:366,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 30
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 372
    functionName: compare_match
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 1
    functionsReached:
    - strcmp
    - compare_match
    linkageType: ''
    returnType: int
    signature: int compare_match(const void *a, const void *b)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/camatch.c:384,1
    - Dst: ca_match_children
      Src: /src/casync/src/camatch.c:386,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:390,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:393,1
    - Dst: assert
      Src: /src/casync/src/camatch.c:396,1
    - Dst: ca_match_make_writable
      Src: /src/casync/src/camatch.c:398,1
    - Dst: ca_match_children
      Src: /src/casync/src/camatch.c:403,1
    - Dst: ca_match_normalize
      Src: /src/casync/src/camatch.c:404,1
    - Dst: ca_match_children
      Src: /src/casync/src/camatch.c:410,1
    - Dst: qsort
      Src: /src/casync/src/camatch.c:414,1
    - Dst: ca_match_children
      Src: /src/casync/src/camatch.c:417,1
    - Dst: ca_match_merge
      Src: /src/casync/src/camatch.c:420,1
    - Dst: ca_match_unref
      Src: /src/casync/src/camatch.c:425,1
    - Dst: ca_match_normalize
      Src: /src/casync/src/camatch.c:436,1
    - Dst: ca_match_normalize
      Src: /src/casync/src/camatch.c:447,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 1
    argNames:
    - match
    argTypes:
    - CaMatch**
    assertStmts:
    - condition: (match)
      pos:
        line_end: 383
        line_start: 383
        source_file: /src/casync/src/camatch.c
    - condition: ((*match)->type == CA_MATCH_INNER)
      pos:
        line_end: 389
        line_start: 389
        source_file: /src/casync/src/camatch.c
    - condition: ((*match)->directory_only)
      pos:
        line_end: 395
        line_start: 395
        source_file: /src/casync/src/camatch.c
    - condition: ((*match)->anchored)
      pos:
        line_end: 392
        line_start: 392
        source_file: /src/casync/src/camatch.c
    constantsTouched: []
    func_position:
      end: 454
      start: 374
    functionDepth: 4
    functionLinenumber: 374
    functionLinenumberEnd: 454
    functionName: ca_match_normalize
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 2
    functionsReached:
    - ca_match_make_writable
    - qsort
    - ca_match_children
    - ca_match_unref
    - ca_match_merge
    - assert
    - ca_match_normalize
    linkageType: ''
    returnType: int
    signature: int ca_match_normalize(CaMatch **match)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/camatch.c:457,1
    - Dst: isempty
      Src: /src/casync/src/camatch.c:467,1
    - Dst: dot_or_dot_dot
      Src: /src/casync/src/camatch.c:467,1
    - Dst: ca_match_children
      Src: /src/casync/src/camatch.c:470,1
    - Dst: ca_match_alloc_subtree
      Src: /src/casync/src/camatch.c:478,1
    - Dst: ca_match_add_child
      Src: /src/casync/src/camatch.c:483,1
    - Dst: fnmatch
      Src: /src/casync/src/camatch.c:493,1
    - Dst: ca_match_alloc_subtree
      Src: /src/casync/src/camatch.c:517,1
    - Dst: ca_match_add_child
      Src: /src/casync/src/camatch.c:523,1
    - Dst: assert_not_reached
      Src: /src/casync/src/camatch.c:534,1
    - Dst: ca_match_normalize
      Src: /src/casync/src/camatch.c:547,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 61
    argCount: 4
    argNames:
    - match
    - name
    - is_directory
    - ret_subtree
    argTypes:
    - CaMatch*
    - char*
    - bool
    - CaMatch**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 456
    functionDepth: 5
    functionLinenumber: 456
    functionLinenumberEnd: 557
    functionName: ca_match_test
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 2
    functionsReached:
    - ca_match_children
    - isempty
    - ca_match_alloc_subtree
    - ca_match_add_child
    - assert_not_reached
    - fnmatch
    - dot_or_dot_dot
    - ca_match_normalize
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_match_test(CaMatch *match, const char *name, bool is_directory,
      CaMatch **ret_subtree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strempty
      Src: /src/casync/src/camatch.c:566,1
    - Dst: fprintf
      Src: /src/casync/src/camatch.c:568,1
    - Dst: strjoina
      Src: /src/casync/src/camatch.c:576,1
    - Dst: ca_match_dump
      Src: /src/casync/src/camatch.c:579,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - f
    - match
    - prefix
    argTypes:
    - FILE*
    - CaMatch*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 580
    functionName: ca_match_dump
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 2
    functionsReached:
    - ca_match_dump
    - strjoina
    - fprintf
    - strempty
    linkageType: ''
    returnType: void
    signature: void ca_match_dump(FILE *f, CaMatch *match, const char *prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: compare_match
      Src: /src/casync/src/camatch.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - CaMatch*
    - CaMatch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 582
    functionDepth: 2
    functionLinenumber: 582
    functionLinenumberEnd: 584
    functionName: ca_match_equal
    functionSourceFile: /src/casync/src/camatch.c
    functionUses: 1
    functionsReached:
    - compare_match
    linkageType: ''
    returnType: bool
    signature: bool ca_match_equal(CaMatch *a, CaMatch *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/src/cacache.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - c
    argTypes:
    - CaCache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: ca_cache_digest_type
    functionSourceFile: /src/casync/src/cacache.c
    functionUses: 0
    functionsReached:
    - assert_se
    linkageType: ''
    returnType: CaDigestType
    signature: CaDigestType ca_cache_digest_type(CaCache *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/cacache.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 42
    functionName: ca_cache_new
    functionSourceFile: /src/casync/src/cacache.c
    functionUses: 2
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaCache
    signature: CaCache *ca_cache_new(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/src/cacache.c:48,1
    - Dst: free
      Src: /src/casync/src/cacache.c:54,1
    - Dst: safe_close
      Src: /src/casync/src/cacache.c:55,1
    - Dst: ca_digest_free
      Src: /src/casync/src/cacache.c:56,1
    - Dst: mfree
      Src: /src/casync/src/cacache.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - c
    argTypes:
    - CaCache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 44
    functionDepth: 3
    functionLinenumber: 44
    functionLinenumberEnd: 59
    functionName: ca_cache_unref
    functionSourceFile: /src/casync/src/cacache.c
    functionUses: 1
    functionsReached:
    - mfree
    - safe_close
    - assert_se
    - ca_digest_free
    - free
    linkageType: ''
    returnType: CaCache
    signature: CaCache *ca_cache_unref(CaCache *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/src/cacache.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - c
    argTypes:
    - CaCache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 69
    functionName: ca_cache_ref
    functionSourceFile: /src/casync/src/cacache.c
    functionUses: 0
    functionsReached:
    - assert_se
    linkageType: ''
    returnType: CaCache
    signature: CaCache *ca_cache_ref(CaCache *c)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - c
    - type
    argTypes:
    - CaCache*
    - CaDigestType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 84
    functionName: ca_cache_set_digest_type
    functionSourceFile: /src/casync/src/cacache.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_cache_set_digest_type(CaCache *c, CaDigestType type)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - c
    - fd
    argTypes:
    - CaCache*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 99
    functionName: ca_cache_set_fd
    functionSourceFile: /src/casync/src/cacache.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_cache_set_fd(CaCache *c, int fd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/casync/src/cacache.c:113,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - c
    - path
    argTypes:
    - CaCache*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 118
    functionName: ca_cache_set_path
    functionSourceFile: /src/casync/src/cacache.c
    functionUses: 1
    functionsReached:
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_cache_set_path(CaCache *c, const char *path)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mkdir
      Src: /src/casync/src/cacache.c:130,1
    - Dst: open
      Src: /src/casync/src/cacache.c:132,1
    - Dst: mask_attr_fd
      Src: /src/casync/src/cacache.c:138,1
    - Dst: log_debug_errno
      Src: /src/casync/src/cacache.c:140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - c
    argTypes:
    - CaCache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 120
    functionDepth: 4
    functionLinenumber: 120
    functionLinenumberEnd: 143
    functionName: ca_cache_open
    functionSourceFile: /src/casync/src/cacache.c
    functionUses: 0
    functionsReached:
    - mask_attr_fd
    - log_debug_errno
    - mkdir
    - open
    linkageType: ''
    returnType: int
    signature: int ca_cache_open(CaCache *c)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/cacache.c:146,1
    - Dst: _cleanup_
      Src: /src/casync/src/cacache.c:147,1
    - Dst: CA_CHUNK_ID_PATH_SIZE
      Src: /src/casync/src/cacache.c:148,1
    - Dst: _cleanup_
      Src: /src/casync/src/cacache.c:150,1
    - Dst: assert_se
      Src: /src/casync/src/cacache.c:159,1
    - Dst: ca_cache_open
      Src: /src/casync/src/cacache.c:161,1
    - Dst: ca_digest_new
      Src: /src/casync/src/cacache.c:166,1
    - Dst: ca_cache_digest_type
      Src: /src/casync/src/cacache.c:166,1
    - Dst: ca_location_id_make
      Src: /src/casync/src/cacache.c:171,1
    - Dst: ca_chunk_id_format_path
      Src: /src/casync/src/cacache.c:175,1
    - Dst: readlinkat_malloc
      Src: /src/casync/src/cacache.c:177,1
    - Dst: openat
      Src: /src/casync/src/cacache.c:181,1
    - Dst: realloc_buffer_read_target
      Src: /src/casync/src/cacache.c:185,1
    - Dst: memcpy
      Src: /src/casync/src/cacache.c:192,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cacache.c:192,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/src/cacache.c:193,1
    - Dst: realloc_buffer_donate
      Src: /src/casync/src/cacache.c:203,1
    - Dst: strlen
      Src: /src/casync/src/cacache.c:203,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cacache.c:207,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cacache.c:210,1
    - Dst: strndupa
      Src: /src/casync/src/cacache.c:215,1
    - Dst: ca_chunk_id_parse
      Src: /src/casync/src/cacache.c:216,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/src/cacache.c:219,1
    - Dst: ca_origin_new
      Src: /src/casync/src/cacache.c:224,1
    - Dst: _cleanup_
      Src: /src/casync/src/cacache.c:229,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/cacache.c:233,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/cacache.c:234,1
    - Dst: memchr
      Src: /src/casync/src/cacache.c:236,1
    - Dst: realloc_buffer_read
      Src: /src/casync/src/cacache.c:240,1
    - Dst: ca_location_parse
      Src: /src/casync/src/cacache.c:254,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/src/cacache.c:264,1
    - Dst: ca_origin_put
      Src: /src/casync/src/cacache.c:268,1
    - Dst: ca_origin_bytes
      Src: /src/casync/src/cacache.c:274,1
    - Dst: ca_location_equal
      Src: /src/casync/src/cacache.c:278,1
    - Dst: ca_origin_get
      Src: /src/casync/src/cacache.c:278,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 98
    argCount: 4
    argNames:
    - c
    - location
    - ret_chunk_id
    - ret_origin
    argTypes:
    - CaCache*
    - CaLocation*
    - CaChunkID*
    - CaOrigin**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 145
    functionDepth: 5
    functionLinenumber: 145
    functionLinenumberEnd: 290
    functionName: ca_cache_get
    functionSourceFile: /src/casync/src/cacache.c
    functionUses: 1
    functionsReached:
    - assert_se
    - realloc_buffer_read_target
    - ca_origin_get
    - _cleanup_
    - ca_location_parse
    - memcpy
    - ca_digest_new
    - memchr
    - readlinkat_malloc
    - realloc_buffer_donate
    - ca_origin_bytes
    - ca_chunk_id_parse
    - realloc_buffer_read
    - realloc_buffer_data
    - ca_cache_digest_type
    - ca_origin_new
    - strndupa
    - ca_chunk_id_format_path
    - ca_location_equal
    - ca_cache_open
    - strlen
    - openat
    - ca_origin_put
    - CA_CHUNK_ID_PATH_SIZE
    - realloc_buffer_advance
    - ca_location_id_make
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_cache_get(CaCache *c, CaLocation *location, CaChunkID *ret_chunk_id,
      CaOrigin **ret_origin)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/cacache.c:293,1
    - Dst: CA_CHUNK_ID_PATH_SIZE
      Src: /src/casync/src/cacache.c:294,1
    - Dst: _cleanup_
      Src: /src/casync/src/cacache.c:295,1
    - Dst: _cleanup_
      Src: /src/casync/src/cacache.c:296,1
    - Dst: ca_origin_get
      Src: /src/casync/src/cacache.c:310,1
    - Dst: ca_cache_open
      Src: /src/casync/src/cacache.c:314,1
    - Dst: ca_digest_new
      Src: /src/casync/src/cacache.c:319,1
    - Dst: ca_cache_digest_type
      Src: /src/casync/src/cacache.c:319,1
    - Dst: ca_location_id_make
      Src: /src/casync/src/cacache.c:324,1
    - Dst: ca_chunk_id_format_path
      Src: /src/casync/src/cacache.c:328,1
    - Dst: strndupa
      Src: /src/casync/src/cacache.c:330,1
    - Dst: mkdirat
      Src: /src/casync/src/cacache.c:331,1
    - Dst: ca_origin_items
      Src: /src/casync/src/cacache.c:333,1
    - Dst: ca_location_format
      Src: /src/casync/src/cacache.c:340,1
    - Dst: newa
      Src: /src/casync/src/cacache.c:344,1
    - Dst: strlen
      Src: /src/casync/src/cacache.c:344,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/cacache.c:346,1
    - Dst: strcpy
      Src: /src/casync/src/cacache.c:348,1
    - Dst: symlinkat
      Src: /src/casync/src/cacache.c:350,1
    - Dst: faccessat
      Src: /src/casync/src/cacache.c:361,1
    - Dst: tempfn_random
      Src: /src/casync/src/cacache.c:365,1
    - Dst: openat
      Src: /src/casync/src/cacache.c:369,1
    - Dst: realloc_buffer_append
      Src: /src/casync/src/cacache.c:373,1
    - Dst: ca_origin_items
      Src: /src/casync/src/cacache.c:376,1
    - Dst: realloc_buffer_write_maybe
      Src: /src/casync/src/cacache.c:380,1
    - Dst: ca_origin_get
      Src: /src/casync/src/cacache.c:384,1
    - Dst: ca_location_format
      Src: /src/casync/src/cacache.c:388,1
    - Dst: realloc_buffer_append
      Src: /src/casync/src/cacache.c:392,1
    - Dst: strlen
      Src: /src/casync/src/cacache.c:392,1
    - Dst: realloc_buffer_write
      Src: /src/casync/src/cacache.c:396,1
    - Dst: renameat
      Src: /src/casync/src/cacache.c:400,1
    - Dst: mfree
      Src: /src/casync/src/cacache.c:403,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 74
    argCount: 3
    argNames:
    - c
    - origin
    - chunk_id
    argTypes:
    - CaCache*
    - CaOrigin*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 292
    functionDepth: 5
    functionLinenumber: 292
    functionLinenumberEnd: 405
    functionName: ca_cache_put
    functionSourceFile: /src/casync/src/cacache.c
    functionUses: 1
    functionsReached:
    - ca_location_format
    - ca_origin_items
    - tempfn_random
    - ca_chunk_id_format
    - strcpy
    - realloc_buffer_append
    - renameat
    - ca_origin_get
    - newa
    - _cleanup_
    - ca_digest_new
    - faccessat
    - realloc_buffer_write_maybe
    - mfree
    - symlinkat
    - ca_cache_digest_type
    - strndupa
    - realloc_buffer_write
    - ca_chunk_id_format_path
    - ca_cache_open
    - strlen
    - openat
    - mkdirat
    - CA_CHUNK_ID_PATH_SIZE
    - ca_location_id_make
    linkageType: ''
    returnType: int
    signature: int ca_cache_put(CaCache *c, CaOrigin *origin, const CaChunkID *chunk_id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CA_CHUNK_ID_PATH_SIZE
      Src: /src/casync/src/cacache.c:408,1
    - Dst: ca_cache_open
      Src: /src/casync/src/cacache.c:418,1
    - Dst: ca_digest_new
      Src: /src/casync/src/cacache.c:423,1
    - Dst: ca_cache_digest_type
      Src: /src/casync/src/cacache.c:423,1
    - Dst: ca_location_id_make
      Src: /src/casync/src/cacache.c:428,1
    - Dst: ca_chunk_id_format_path
      Src: /src/casync/src/cacache.c:432,1
    - Dst: unlinkat
      Src: /src/casync/src/cacache.c:434,1
    - Dst: strndupa
      Src: /src/casync/src/cacache.c:437,1
    - Dst: unlinkat
      Src: /src/casync/src/cacache.c:438,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - c
    - location
    argTypes:
    - CaCache*
    - CaLocation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 407
    functionDepth: 5
    functionLinenumber: 407
    functionLinenumberEnd: 441
    functionName: ca_cache_remove
    functionSourceFile: /src/casync/src/cacache.c
    functionUses: 1
    functionsReached:
    - unlinkat
    - ca_cache_open
    - ca_digest_new
    - ca_cache_digest_type
    - strndupa
    - CA_CHUNK_ID_PATH_SIZE
    - ca_chunk_id_format_path
    - ca_location_id_make
    linkageType: ''
    returnType: int
    signature: int ca_cache_remove(CaCache *c, CaLocation *location)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/fssize.c:106,1
    - Dst: assert
      Src: /src/casync/src/fssize.c:107,1
    - Dst: pread
      Src: /src/casync/src/fssize.c:109,1
    - Dst: le32toh
      Src: /src/casync/src/fssize.c:115,1
    - Dst: ALIGN_TO
      Src: /src/casync/src/fssize.c:116,1
    - Dst: le64toh
      Src: /src/casync/src/fssize.c:116,1
    - Dst: UINT64_C
      Src: /src/casync/src/fssize.c:116,1
    - Dst: le32toh
      Src: /src/casync/src/fssize.c:120,1
    - Dst: le32toh
      Src: /src/casync/src/fssize.c:121,1
    - Dst: le32toh
      Src: /src/casync/src/fssize.c:124,1
    - Dst: IS_POWER_OF_TWO
      Src: /src/casync/src/fssize.c:125,1
    - Dst: ALIGN_TO
      Src: /src/casync/src/fssize.c:127,1
    - Dst: ALIGN_TO
      Src: /src/casync/src/fssize.c:128,1
    - Dst: le32toh
      Src: /src/casync/src/fssize.c:128,1
    - Dst: ALIGN_TO
      Src: /src/casync/src/fssize.c:129,1
    - Dst: le32toh
      Src: /src/casync/src/fssize.c:129,1
    - Dst: ALIGN_TO
      Src: /src/casync/src/fssize.c:130,1
    - Dst: le32toh
      Src: /src/casync/src/fssize.c:130,1
    - Dst: ALIGN_TO
      Src: /src/casync/src/fssize.c:131,1
    - Dst: le32toh
      Src: /src/casync/src/fssize.c:131,1
    - Dst: le16toh
      Src: /src/casync/src/fssize.c:137,1
    - Dst: le16toh
      Src: /src/casync/src/fssize.c:140,1
    - Dst: IS_POWER_OF_TWO
      Src: /src/casync/src/fssize.c:141,1
    - Dst: le16toh
      Src: /src/casync/src/fssize.c:144,1
    - Dst: le16toh
      Src: /src/casync/src/fssize.c:144,1
    - Dst: le32toh
      Src: /src/casync/src/fssize.c:146,1
    - Dst: le16toh
      Src: /src/casync/src/fssize.c:146,1
    - Dst: le16toh
      Src: /src/casync/src/fssize.c:155,1
    - Dst: le32toh
      Src: /src/casync/src/fssize.c:158,1
    - Dst: le32toh
      Src: /src/casync/src/fssize.c:160,1
    - Dst: UINT64_C
      Src: /src/casync/src/fssize.c:160,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 2
    argNames:
    - fd
    - ret
    argTypes:
    - int
    - uint64_t*
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 105
        line_start: 105
        source_file: /src/casync/src/fssize.c
    - condition: (ret)
      pos:
        line_end: 106
        line_start: 106
        source_file: /src/casync/src/fssize.c
    constantsTouched: []
    func_position:
      end: 166
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 166
    functionName: read_file_system_size
    functionSourceFile: /src/casync/src/fssize.c
    functionUses: 1
    functionsReached:
    - le64toh
    - ALIGN_TO
    - pread
    - le16toh
    - le32toh
    - UINT64_C
    - IS_POWER_OF_TWO
    - assert
    linkageType: ''
    returnType: int
    signature: int read_file_system_size(int fd, uint64_t *ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/realloc-buffer.h:18,1
    - Dst: assert
      Src: /src/casync/src/realloc-buffer.h:19,1
    - Dst: assert
      Src: /src/casync/src/realloc-buffer.h:20,1
    - Dst: assert
      Src: /src/casync/src/realloc-buffer.h:21,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - ReallocBuffer*
    assertStmts:
    - condition: (buffer)
      pos:
        line_end: 17
        line_start: 17
        source_file: /src/casync/src/realloc-buffer.h
    - condition: (buffer->data || buffer->allocated == 0)
      pos:
        line_end: 20
        line_start: 20
        source_file: /src/casync/src/realloc-buffer.h
    - condition: (buffer->end <= buffer->allocated)
      pos:
        line_end: 19
        line_start: 19
        source_file: /src/casync/src/realloc-buffer.h
    - condition: (buffer->start <= buffer->end)
      pos:
        line_end: 18
        line_start: 18
        source_file: /src/casync/src/realloc-buffer.h
    constantsTouched: []
    func_position:
      end: 27
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 27
    functionName: realloc_buffer_data
    functionSourceFile: /src/casync/src/realloc-buffer.h
    functionUses: 25
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void *realloc_buffer_data(ReallocBuffer *buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/realloc-buffer.h:32,1
    - Dst: assert
      Src: /src/casync/src/realloc-buffer.h:33,1
    - Dst: assert
      Src: /src/casync/src/realloc-buffer.h:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - buffer
    - offset
    argTypes:
    - ReallocBuffer*
    - size_t
    assertStmts:
    - condition: (buffer)
      pos:
        line_end: 31
        line_start: 31
        source_file: /src/casync/src/realloc-buffer.h
    - condition: (buffer->start <= buffer->end)
      pos:
        line_end: 32
        line_start: 32
        source_file: /src/casync/src/realloc-buffer.h
    - condition: (buffer->end <= buffer->allocated)
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/casync/src/realloc-buffer.h
    constantsTouched: []
    func_position:
      end: 43
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 43
    functionName: realloc_buffer_data_offset
    functionSourceFile: /src/casync/src/realloc-buffer.h
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void *realloc_buffer_data_offset(ReallocBuffer *buffer, size_t offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/realloc-buffer.h:46,1
    - Dst: assert
      Src: /src/casync/src/realloc-buffer.h:47,1
    - Dst: assert
      Src: /src/casync/src/realloc-buffer.h:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - ReallocBuffer*
    assertStmts:
    - condition: (buffer)
      pos:
        line_end: 45
        line_start: 45
        source_file: /src/casync/src/realloc-buffer.h
    - condition: (buffer->end <= buffer->allocated)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/casync/src/realloc-buffer.h
    - condition: (buffer->start <= buffer->end)
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/casync/src/realloc-buffer.h
    constantsTouched: []
    func_position:
      end: 51
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 51
    functionName: realloc_buffer_size
    functionSourceFile: /src/casync/src/realloc-buffer.h
    functionUses: 40
    functionsReached:
    - assert
    linkageType: ''
    returnType: size_t
    signature: size_t realloc_buffer_size(ReallocBuffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_append
      Src: /src/casync/src/realloc-buffer.h:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - q
    argTypes:
    - ReallocBuffer*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: realloc_buffer_append_byte
    functionSourceFile: /src/casync/src/realloc-buffer.h
    functionUses: 1
    functionsReached:
    - realloc_buffer_append
    linkageType: ''
    returnType: void
    signature: void * realloc_buffer_append_byte(ReallocBuffer *b, uint8_t q)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - b
    argTypes:
    - ReallocBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: realloc_buffer_empty
    functionSourceFile: /src/casync/src/realloc-buffer.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void realloc_buffer_empty(ReallocBuffer *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_read_size
      Src: /src/casync/src/realloc-buffer.h:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - fd
    argTypes:
    - ReallocBuffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 4
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: realloc_buffer_read
    functionSourceFile: /src/casync/src/realloc-buffer.h
    functionUses: 3
    functionsReached:
    - realloc_buffer_read_size
    linkageType: ''
    returnType: int
    signature: int realloc_buffer_read(ReallocBuffer *b, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc0
      Src: /src/casync/src/canametable.c:15,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - m
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 25
    functionName: ca_name_table_new_size
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 1
    functionsReached:
    - malloc0
    linkageType: ''
    returnType: CaNameTable
    signature: CaNameTable *ca_name_table_new_size(size_t m)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/canametable.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - CaNameTable*
    assertStmts:
    - condition: (t->n_ref > 0)
      pos:
        line_end: 30
        line_start: 30
        source_file: /src/casync/src/canametable.c
    constantsTouched: []
    func_position:
      end: 35
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 35
    functionName: ca_name_table_ref
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 4
    functionsReached:
    - assert
    linkageType: ''
    returnType: CaNameTable
    signature: CaNameTable *ca_name_table_ref(CaNameTable *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/canametable.c:41,1
    - Dst: ca_name_table_unref
      Src: /src/casync/src/canametable.c:48,1
    - Dst: free
      Src: /src/casync/src/canametable.c:49,1
    - Dst: free
      Src: /src/casync/src/canametable.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - t
    argTypes:
    - CaNameTable*
    assertStmts:
    - condition: (t->n_ref > 0)
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/casync/src/canametable.c
    constantsTouched: []
    func_position:
      end: 53
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 53
    functionName: ca_name_table_unref
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 8
    functionsReached:
    - ca_name_table_unref
    - assert
    - free
    linkageType: ''
    returnType: CaNameTable
    signature: CaNameTable *ca_name_table_unref(CaNameTable *t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MAX
      Src: /src/casync/src/canametable.c:74,1
    - Dst: malloc0
      Src: /src/casync/src/canametable.c:79,1
    - Dst: ca_name_table_ref
      Src: /src/casync/src/canametable.c:87,1
    - Dst: memcpy
      Src: /src/casync/src/canametable.c:90,1
    - Dst: ca_name_table_unref
      Src: /src/casync/src/canametable.c:92,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - t
    - add
    argTypes:
    - CaNameTable**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 96
    functionName: ca_name_table_make_writable
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 1
    functionsReached:
    - ca_name_table_unref
    - memcpy
    - malloc0
    - MAX
    - ca_name_table_ref
    linkageType: ''
    returnType: int
    signature: int ca_name_table_make_writable(CaNameTable **t, size_t add)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_name_table_make_writable
      Src: /src/casync/src/canametable.c:101,1
    - Dst: assert
      Src: /src/casync/src/canametable.c:105,1
    - Dst: assert
      Src: /src/casync/src/canametable.c:106,1
    - Dst: assert
      Src: /src/casync/src/canametable.c:107,1
    - Dst: mfree
      Src: /src/casync/src/canametable.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - t
    - ret
    argTypes:
    - CaNameTable**
    - CaNameItem**
    assertStmts:
    - condition: ((*t)->n_ref == 1)
      pos:
        line_end: 105
        line_start: 105
        source_file: /src/casync/src/canametable.c
    - condition: (*t)
      pos:
        line_end: 104
        line_start: 104
        source_file: /src/casync/src/canametable.c
    - condition: ((*t)->n_allocated > (*t)->n_items)
      pos:
        line_end: 106
        line_start: 106
        source_file: /src/casync/src/canametable.c
    constantsTouched: []
    func_position:
      end: 113
      start: 98
    functionDepth: 3
    functionLinenumber: 98
    functionLinenumberEnd: 113
    functionName: ca_name_table_add
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 2
    functionsReached:
    - assert
    - mfree
    - ca_name_table_make_writable
    linkageType: ''
    returnType: int
    signature: int ca_name_table_add(CaNameTable **t, CaNameItem **ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_printf
      Src: /src/casync/src/canametable.c:127,1
    - Dst: realloc_buffer_printf
      Src: /src/casync/src/canametable.c:136,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - t
    - buffer
    argTypes:
    - CaNameTable*
    - ReallocBuffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 115
    functionDepth: 4
    functionLinenumber: 115
    functionLinenumberEnd: 144
    functionName: ca_name_table_format_realloc_buffer
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_printf
    linkageType: ''
    returnType: int
    signature: int ca_name_table_format_realloc_buffer(CaNameTable *t, ReallocBuffer
      *buffer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/canametable.c:147,1
    - Dst: ca_name_table_format_realloc_buffer
      Src: /src/casync/src/canametable.c:156,1
    - Dst: realloc_buffer_append_byte
      Src: /src/casync/src/canametable.c:160,1
    - Dst: realloc_buffer_steal
      Src: /src/casync/src/canametable.c:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - t
    argTypes:
    - CaNameTable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 146
    functionDepth: 5
    functionLinenumber: 146
    functionLinenumberEnd: 165
    functionName: ca_name_table_format
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 1
    functionsReached:
    - realloc_buffer_steal
    - ca_name_table_format_realloc_buffer
    - realloc_buffer_append_byte
    - _cleanup_
    linkageType: ''
    returnType: char
    signature: char * ca_name_table_format(CaNameTable *t)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/canametable.c:173,1
    - Dst: assert
      Src: /src/casync/src/canametable.c:174,1
    - Dst: assert
      Src: /src/casync/src/canametable.c:175,1
    - Dst: assert
      Src: /src/casync/src/canametable.c:176,1
    - Dst: assert
      Src: /src/casync/src/canametable.c:177,1
    - Dst: strspn
      Src: /src/casync/src/canametable.c:185,1
    - Dst: strndupa
      Src: /src/casync/src/canametable.c:186,1
    - Dst: safe_atox64
      Src: /src/casync/src/canametable.c:187,1
    - Dst: strspn
      Src: /src/casync/src/canametable.c:197,1
    - Dst: strndupa
      Src: /src/casync/src/canametable.c:198,1
    - Dst: safe_atox64
      Src: /src/casync/src/canametable.c:199,1
    - Dst: strspn
      Src: /src/casync/src/canametable.c:209,1
    - Dst: strndupa
      Src: /src/casync/src/canametable.c:210,1
    - Dst: safe_atox64
      Src: /src/casync/src/canametable.c:211,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 4
    argNames:
    - text
    - ret_hash
    - ret_start_offset
    - ret_end_offset
    argTypes:
    - char**
    - uint64_t*
    - uint64_t*
    - uint64_t*
    assertStmts:
    - condition: (text)
      pos:
        line_end: 172
        line_start: 172
        source_file: /src/casync/src/canametable.c
    - condition: (ret_hash)
      pos:
        line_end: 174
        line_start: 174
        source_file: /src/casync/src/canametable.c
    - condition: (ret_start_offset)
      pos:
        line_end: 175
        line_start: 175
        source_file: /src/casync/src/canametable.c
    - condition: (ret_end_offset)
      pos:
        line_end: 176
        line_start: 176
        source_file: /src/casync/src/canametable.c
    - condition: (*text)
      pos:
        line_end: 173
        line_start: 173
        source_file: /src/casync/src/canametable.c
    constantsTouched: []
    func_position:
      end: 224
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 224
    functionName: parse_one
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 1
    functionsReached:
    - safe_atox64
    - assert
    - strndupa
    - strspn
    linkageType: ''
    returnType: int
    signature: int parse_one(const char **text, uint64_t *ret_hash, uint64_t *ret_start_offset,
      uint64_t *ret_end_offset)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/canametable.c:227,1
    - Dst: ca_name_table_new
      Src: /src/casync/src/canametable.c:244,1
    - Dst: strspn
      Src: /src/casync/src/canametable.c:248,1
    - Dst: strndupa
      Src: /src/casync/src/canametable.c:249,1
    - Dst: safe_atox64
      Src: /src/casync/src/canametable.c:250,1
    - Dst: ca_name_table_parse
      Src: /src/casync/src/canametable.c:261,1
    - Dst: parse_one
      Src: /src/casync/src/canametable.c:270,1
    - Dst: ca_name_table_add
      Src: /src/casync/src/canametable.c:274,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 2
    argNames:
    - text
    - ret
    argTypes:
    - char**
    - CaNameTable**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 226
    functionDepth: 4
    functionLinenumber: 226
    functionLinenumberEnd: 289
    functionName: ca_name_table_parse
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 2
    functionsReached:
    - ca_name_table_add
    - safe_atox64
    - ca_name_table_parse
    - strspn
    - ca_name_table_new
    - strndupa
    - parse_one
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_name_table_parse(const char **text, CaNameTable **ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 305
    functionName: name_table_compare
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int name_table_compare(const void *a, const void *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_name_table_items
      Src: /src/casync/src/canametable.c:314,1
    - Dst: ca_name_table_ref
      Src: /src/casync/src/canametable.c:316,1
    - Dst: memcpy
      Src: /src/casync/src/canametable.c:324,1
    - Dst: qsort
      Src: /src/casync/src/canametable.c:325,1
    - Dst: ca_name_table_new_size
      Src: /src/casync/src/canametable.c:327,1
    - Dst: ca_make_bst
      Src: /src/casync/src/canametable.c:334,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - t
    - ret
    argTypes:
    - CaNameTable*
    - CaNameTable**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 307
    functionDepth: 3
    functionLinenumber: 307
    functionLinenumberEnd: 338
    functionName: ca_name_table_make_bst
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 1
    functionsReached:
    - memcpy
    - ca_name_table_new_size
    - qsort
    - ca_name_table_items
    - ca_name_table_ref
    - ca_make_bst
    linkageType: ''
    returnType: int
    signature: int ca_name_table_make_bst(CaNameTable *t, CaNameTable **ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_name_table_items
      Src: /src/casync/src/canametable.c:346,1
    - Dst: fprintf
      Src: /src/casync/src/canametable.c:347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - f
    - t
    argTypes:
    - FILE*
    - CaNameTable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 355
    functionName: ca_name_table_dump
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 0
    functionsReached:
    - ca_name_table_items
    - fprintf
    linkageType: ''
    returnType: int
    signature: int ca_name_table_dump(FILE *f, CaNameTable *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_name_table_dump
      Src: /src/casync/src/canametable.c:364,1
    - Dst: fputs
      Src: /src/casync/src/canametable.c:369,1
    - Dst: fputs
      Src: /src/casync/src/canametable.c:372,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - f
    - t
    argTypes:
    - FILE*
    - CaNameTable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 374
    functionName: ca_name_table_dump_recursive
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 0
    functionsReached:
    - ca_name_table_dump
    - fputs
    linkageType: ''
    returnType: int
    signature: int ca_name_table_dump_recursive(FILE *f, CaNameTable *t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ca_name_table_items
      Src: /src/casync/src/canametable.c:387,1
    - Dst: ca_name_table_items
      Src: /src/casync/src/canametable.c:387,1
    - Dst: ca_name_table_items
      Src: /src/casync/src/canametable.c:390,1
    - Dst: ca_name_table_get
      Src: /src/casync/src/canametable.c:393,1
    - Dst: ca_name_table_get
      Src: /src/casync/src/canametable.c:394,1
    - Dst: assert
      Src: /src/casync/src/canametable.c:396,1
    - Dst: assert
      Src: /src/casync/src/canametable.c:397,1
    - Dst: ca_name_table_equal
      Src: /src/casync/src/canametable.c:407,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - CaNameTable*
    - CaNameTable*
    assertStmts:
    - condition: (x)
      pos:
        line_end: 395
        line_start: 395
        source_file: /src/casync/src/canametable.c
    - condition: (y)
      pos:
        line_end: 396
        line_start: 396
        source_file: /src/casync/src/canametable.c
    constantsTouched: []
    func_position:
      end: 408
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 408
    functionName: ca_name_table_equal
    functionSourceFile: /src/casync/src/canametable.c
    functionUses: 2
    functionsReached:
    - ca_name_table_equal
    - assert
    - ca_name_table_items
    - ca_name_table_get
    linkageType: ''
    returnType: bool
    signature: bool ca_name_table_equal(CaNameTable *a, CaNameTable *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/caremote.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 123
    functionName: ca_remote_new
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 5
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaRemote
    signature: CaRemote * ca_remote_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr->n_ref > 0)
      pos:
        line_end: 128
        line_start: 128
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 133
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 133
    functionName: ca_remote_ref
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: CaRemote
    signature: CaRemote * ca_remote_ref(CaRemote *rr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:138,1
    - Dst: rm_rf
      Src: /src/casync/src/caremote.c:144,1
    - Dst: mfree
      Src: /src/casync/src/caremote.c:145,1
    - Dst: safe_close
      Src: /src/casync/src/caremote.c:146,1
    - Dst: rm_rf_children
      Src: /src/casync/src/caremote.c:148,1
    - Dst: FOREACH_STRING
      Src: /src/casync/src/caremote.c:160,1
    - Dst: openat
      Src: /src/casync/src/caremote.c:164,1
    - Dst: rm_rf_children
      Src: /src/casync/src/caremote.c:168,1
    - Dst: unlinkat
      Src: /src/casync/src/caremote.c:169,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 137
        line_start: 137
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 171
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 171
    functionName: ca_remote_remove_cache
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - unlinkat
    - mfree
    - safe_close
    - openat
    - FOREACH_STRING
    - rm_rf
    - assert
    - rm_rf_children
    linkageType: ''
    returnType: void
    signature: void ca_remote_remove_cache(CaRemote *rr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:174,1
    - Dst: safe_close
      Src: /src/casync/src/caremote.c:176,1
    - Dst: unlink
      Src: /src/casync/src/caremote.c:179,1
    - Dst: mfree
      Src: /src/casync/src/caremote.c:180,1
    - Dst: mfree
      Src: /src/casync/src/caremote.c:183,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/caremote.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - f
    argTypes:
    - CaRemoteFile*
    assertStmts:
    - condition: (f)
      pos:
        line_end: 173
        line_start: 173
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 185
      start: 173
    functionDepth: 3
    functionLinenumber: 173
    functionLinenumberEnd: 185
    functionName: ca_remote_file_free
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - mfree
    - safe_close
    - unlink
    - assert
    - realloc_buffer_free
    linkageType: ''
    returnType: void
    signature: void ca_remote_file_free(CaRemoteFile *f)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:191,1
    - Dst: ca_remote_remove_cache
      Src: /src/casync/src/caremote.c:197,1
    - Dst: free
      Src: /src/casync/src/caremote.c:199,1
    - Dst: free
      Src: /src/casync/src/caremote.c:200,1
    - Dst: free
      Src: /src/casync/src/caremote.c:202,1
    - Dst: free
      Src: /src/casync/src/caremote.c:203,1
    - Dst: free
      Src: /src/casync/src/caremote.c:204,1
    - Dst: strv_free
      Src: /src/casync/src/caremote.c:205,1
    - Dst: free
      Src: /src/casync/src/caremote.c:207,1
    - Dst: safe_close
      Src: /src/casync/src/caremote.c:208,1
    - Dst: safe_close
      Src: /src/casync/src/caremote.c:211,1
    - Dst: safe_close
      Src: /src/casync/src/caremote.c:213,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/caremote.c:215,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/caremote.c:216,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/caremote.c:217,1
    - Dst: realloc_buffer_free
      Src: /src/casync/src/caremote.c:218,1
    - Dst: ca_remote_file_free
      Src: /src/casync/src/caremote.c:220,1
    - Dst: ca_remote_file_free
      Src: /src/casync/src/caremote.c:221,1
    - Dst: wait_for_terminate
      Src: /src/casync/src/caremote.c:225,1
    - Dst: ca_digest_free
      Src: /src/casync/src/caremote.c:228,1
    - Dst: mfree
      Src: /src/casync/src/caremote.c:230,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr->n_ref > 0)
      pos:
        line_end: 190
        line_start: 190
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 231
      start: 187
    functionDepth: 4
    functionLinenumber: 187
    functionLinenumberEnd: 231
    functionName: ca_remote_unref
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - ca_remote_remove_cache
    - strv_free
    - safe_close
    - mfree
    - wait_for_terminate
    - ca_remote_file_free
    - assert
    - ca_digest_free
    - realloc_buffer_free
    - free
    linkageType: ''
    returnType: CaRemote
    signature: CaRemote * ca_remote_unref(CaRemote *rr)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rr
    - log_level
    argTypes:
    - CaRemote*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 240
    functionName: ca_remote_set_log_level
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_log_level(CaRemote *rr, int log_level)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rr
    - rate_limit_bps
    argTypes:
    - CaRemote*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 249
    functionName: ca_remote_set_rate_limit_bps
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_rate_limit_bps(CaRemote *rr, uint64_t rate_limit_bps)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - rr
    - flags
    argTypes:
    - CaRemote*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 269
    functionName: ca_remote_set_local_feature_flags
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_local_feature_flags(CaRemote *rr, uint64_t flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - rr
    - flags
    argTypes:
    - CaRemote*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 286
    functionName: ca_remote_add_local_feature_flags
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_add_local_feature_flags(CaRemote *rr, uint64_t flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - rr
    - flags
    argTypes:
    - CaRemote*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 299
    functionName: ca_remote_get_local_feature_flags
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_get_local_feature_flags(CaRemote *rr, uint64_t* flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - rr
    - flags
    argTypes:
    - CaRemote*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 312
    functionName: ca_remote_get_remote_feature_flags
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_get_remote_feature_flags(CaRemote *rr, uint64_t* flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - rr
    - input_fd
    - output_fd
    argTypes:
    - CaRemote*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 331
    functionName: ca_remote_set_io_fds
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_io_fds(CaRemote *rr, int input_fd, int output_fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - rr
    - ret_input_fd
    - ret_output_fd
    argTypes:
    - CaRemote*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 348
    functionName: ca_remote_get_io_fds
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_get_io_fds(CaRemote *rr, int *ret_input_fd, int *ret_output_fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:351,1
    - Dst: MAX
      Src: /src/casync/src/caremote.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 350
        line_start: 350
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 358
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 358
    functionName: ca_remote_get_read_size
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - MAX
    linkageType: ''
    returnType: size_t
    signature: size_t ca_remote_get_read_size(CaRemote *rr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:369,1
    - Dst: ca_remote_get_read_size
      Src: /src/casync/src/caremote.c:369,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:374,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - rr
    - ret_input_events
    - ret_output_events
    argTypes:
    - CaRemote*
    - short*
    - short*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 380
    functionName: ca_remote_get_io_events
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached:
    - ca_remote_get_read_size
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_remote_get_io_events(CaRemote *rr, short *ret_input_events,
      short *ret_output_events)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:387,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:388,1
    - Dst: strchr
      Src: /src/casync/src/caremote.c:396,1
    - Dst: strspn
      Src: /src/casync/src/caremote.c:399,1
    - Dst: startswith
      Src: /src/casync/src/caremote.c:401,1
    - Dst: strspn
      Src: /src/casync/src/caremote.c:405,1
    - Dst: strndup
      Src: /src/casync/src/caremote.c:412,1
    - Dst: streq
      Src: /src/casync/src/caremote.c:417,1
    - Dst: free
      Src: /src/casync/src/caremote.c:418,1
    - Dst: free
      Src: /src/casync/src/caremote.c:422,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:426,1
    - Dst: strndup
      Src: /src/casync/src/caremote.c:427,1
    - Dst: free
      Src: /src/casync/src/caremote.c:429,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 2
    argNames:
    - rr
    - url
    argTypes:
    - CaRemote*
    - char*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 386
        line_start: 386
        source_file: /src/casync/src/caremote.c
    - condition: (url)
      pos:
        line_end: 387
        line_start: 387
        source_file: /src/casync/src/caremote.c
    - condition: (!rr->callout)
      pos:
        line_end: 425
        line_start: 425
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 435
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 435
    functionName: ca_remote_url_prefix_install
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - strndup
    - startswith
    - strspn
    - strchr
    - streq
    - assert
    - free
    linkageType: ''
    returnType: int
    signature: int ca_remote_url_prefix_install(CaRemote *rr, const char *url)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:441,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:442,1
    - Dst: strspn
      Src: /src/casync/src/caremote.c:450,1
    - Dst: strspn
      Src: /src/casync/src/caremote.c:457,1
    - Dst: strndup
      Src: /src/casync/src/caremote.c:469,1
    - Dst: streq
      Src: /src/casync/src/caremote.c:474,1
    - Dst: free
      Src: /src/casync/src/caremote.c:475,1
    - Dst: free
      Src: /src/casync/src/caremote.c:479,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:483,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 2
    argNames:
    - rr
    - url
    argTypes:
    - CaRemote*
    - char*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 440
        line_start: 440
        source_file: /src/casync/src/caremote.c
    - condition: (url)
      pos:
        line_end: 441
        line_start: 441
        source_file: /src/casync/src/caremote.c
    - condition: (!rr->callout)
      pos:
        line_end: 482
        line_start: 482
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 487
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 487
    functionName: ca_remote_ssh_prefix_install
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - strndup
    - strspn
    - streq
    - assert
    - free
    linkageType: ''
    returnType: int
    signature: int ca_remote_ssh_prefix_install(CaRemote *rr, const char *url)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_url_prefix_install
      Src: /src/casync/src/caremote.c:493,1
    - Dst: ca_remote_ssh_prefix_install
      Src: /src/casync/src/caremote.c:498,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rr
    - url
    argTypes:
    - CaRemote*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 499
    functionName: ca_remote_any_prefix_install
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_url_prefix_install
    - ca_remote_ssh_prefix_install
    linkageType: ''
    returnType: int
    signature: int ca_remote_any_prefix_install(CaRemote *rr, const char *url)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_any_prefix_install
      Src: /src/casync/src/caremote.c:511,1
    - Dst: strdup
      Src: /src/casync/src/caremote.c:515,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - rr
    - url
    argTypes:
    - CaRemote*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 501
    functionDepth: 3
    functionLinenumber: 501
    functionLinenumberEnd: 520
    functionName: ca_remote_set_index_url
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached:
    - ca_remote_any_prefix_install
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_index_url(CaRemote *rr, const char *url)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_any_prefix_install
      Src: /src/casync/src/caremote.c:532,1
    - Dst: strdup
      Src: /src/casync/src/caremote.c:536,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - rr
    - url
    argTypes:
    - CaRemote*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 522
    functionDepth: 3
    functionLinenumber: 522
    functionLinenumberEnd: 541
    functionName: ca_remote_set_archive_url
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached:
    - ca_remote_any_prefix_install
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_archive_url(CaRemote *rr, const char *url)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_any_prefix_install
      Src: /src/casync/src/caremote.c:553,1
    - Dst: strdup
      Src: /src/casync/src/caremote.c:557,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - rr
    - url
    argTypes:
    - CaRemote*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 543
    functionDepth: 3
    functionLinenumber: 543
    functionLinenumberEnd: 562
    functionName: ca_remote_set_store_url
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - ca_remote_any_prefix_install
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_store_url(CaRemote *rr, const char *url)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_any_prefix_install
      Src: /src/casync/src/caremote.c:572,1
    - Dst: strv_extend
      Src: /src/casync/src/caremote.c:576,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - rr
    - url
    argTypes:
    - CaRemote*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 564
    functionDepth: 5
    functionLinenumber: 564
    functionLinenumberEnd: 577
    functionName: ca_remote_add_store_url
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_any_prefix_install
    - strv_extend
    linkageType: ''
    returnType: int
    signature: int ca_remote_add_store_url(CaRemote *rr, const char *url)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/casync/src/caremote.c:590,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - rr
    - path
    argTypes:
    - CaRemote*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 595
    functionName: ca_remote_set_cache_path
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_cache_path(CaRemote *rr, const char *path)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - rr
    - fd
    argTypes:
    - CaRemote*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 610
    functionName: ca_remote_set_cache_fd
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_cache_fd(CaRemote *rr, int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:613,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:614,1
    - Dst: strdup
      Src: /src/casync/src/caremote.c:621,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - f
    - path
    argTypes:
    - CaRemoteFile*
    - char*
    assertStmts:
    - condition: (f)
      pos:
        line_end: 612
        line_start: 612
        source_file: /src/casync/src/caremote.c
    - condition: (path)
      pos:
        line_end: 613
        line_start: 613
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 626
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 626
    functionName: ca_remote_file_set_path
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_remote_file_set_path(CaRemoteFile *f, const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_file_set_path
      Src: /src/casync/src/caremote.c:634,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - rr
    - path
    argTypes:
    - CaRemote*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 635
    functionName: ca_remote_set_index_path
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_file_set_path
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_index_path(CaRemote *rr, const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:638,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:639,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - f
    - fd
    argTypes:
    - CaRemoteFile*
    - int
    assertStmts:
    - condition: (f)
      pos:
        line_end: 637
        line_start: 637
        source_file: /src/casync/src/caremote.c
    - condition: (fd >= 0)
      pos:
        line_end: 638
        line_start: 638
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 648
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 648
    functionName: ca_remote_file_set_fd
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_remote_file_set_fd(CaRemoteFile *f, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_file_set_fd
      Src: /src/casync/src/caremote.c:656,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - rr
    - fd
    argTypes:
    - CaRemote*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 657
    functionName: ca_remote_set_index_fd
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_file_set_fd
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_index_fd(CaRemote *rr, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_file_set_path
      Src: /src/casync/src/caremote.c:665,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - rr
    - path
    argTypes:
    - CaRemote*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 666
    functionName: ca_remote_set_archive_path
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_file_set_path
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_archive_path(CaRemote *rr, const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_file_set_fd
      Src: /src/casync/src/caremote.c:674,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - rr
    - fd
    argTypes:
    - CaRemote*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 675
    functionName: ca_remote_set_archive_fd
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_file_set_fd
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_archive_fd(CaRemote *rr, int fd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:680,1
    - Dst: var_tmp_dir
      Src: /src/casync/src/caremote.c:688,1
    - Dst: asprintf
      Src: /src/casync/src/caremote.c:692,1
    - Dst: random_u64
      Src: /src/casync/src/caremote.c:692,1
    - Dst: mkdir
      Src: /src/casync/src/caremote.c:698,1
    - Dst: open
      Src: /src/casync/src/caremote.c:700,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 679
        line_start: 679
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 705
      start: 677
    functionDepth: 4
    functionLinenumber: 677
    functionLinenumberEnd: 705
    functionName: ca_remote_init_cache
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - random_u64
    - mkdir
    - asprintf
    - var_tmp_dir
    - assert
    - open
    linkageType: ''
    returnType: int
    signature: int ca_remote_init_cache(CaRemote *rr)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:714,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:715,1
    - Dst: ca_remote_init_cache
      Src: /src/casync/src/caremote.c:717,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/caremote.c:727,1
    - Dst: strjoina
      Src: /src/casync/src/caremote.c:739,1
    - Dst: readlinkat_malloc
      Src: /src/casync/src/caremote.c:740,1
    - Dst: startswith
      Src: /src/casync/src/caremote.c:749,1
    - Dst: startswith
      Src: /src/casync/src/caremote.c:760,1
    - Dst: safe_atou64
      Src: /src/casync/src/caremote.c:765,1
    - Dst: unlinkat
      Src: /src/casync/src/caremote.c:775,1
    - Dst: unlinkat
      Src: /src/casync/src/caremote.c:779,1
    - Dst: mfree
      Src: /src/casync/src/caremote.c:784,1
    - Dst: asprintf
      Src: /src/casync/src/caremote.c:787,1
    - Dst: mkdirat
      Src: /src/casync/src/caremote.c:793,1
    - Dst: mkdirat
      Src: /src/casync/src/caremote.c:794,1
    - Dst: symlinkat
      Src: /src/casync/src/caremote.c:797,1
    - Dst: symlinkat
      Src: /src/casync/src/caremote.c:802,1
    - Dst: free
      Src: /src/casync/src/caremote.c:817,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 84
    argCount: 4
    argNames:
    - rr
    - id
    - high_priority
    - please_requeue
    argTypes:
    - CaRemote*
    - CaChunkID*
    - bool
    - bool
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 713
        line_start: 713
        source_file: /src/casync/src/caremote.c
    - condition: (id)
      pos:
        line_end: 714
        line_start: 714
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 819
      start: 707
    functionDepth: 5
    functionLinenumber: 707
    functionLinenumberEnd: 819
    functionName: ca_remote_enqueue_request
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - unlinkat
    - strjoina
    - mfree
    - startswith
    - symlinkat
    - safe_atou64
    - ca_chunk_id_format
    - asprintf
    - mkdirat
    - readlinkat_malloc
    - ca_remote_init_cache
    - assert
    - free
    linkageType: ''
    returnType: int
    signature: int ca_remote_enqueue_request(CaRemote *rr, const CaChunkID *id, bool
      high_priority, bool please_requeue)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:829,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:830,1
    - Dst: asprintf
      Src: /src/casync/src/caremote.c:849,1
    - Dst: readlinkat_malloc
      Src: /src/casync/src/caremote.c:852,1
    - Dst: free
      Src: /src/casync/src/caremote.c:853,1
    - Dst: ca_chunk_id_parse
      Src: /src/casync/src/caremote.c:866,1
    - Dst: free
      Src: /src/casync/src/caremote.c:867,1
    - Dst: free
      Src: /src/casync/src/caremote.c:872,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 4
    argNames:
    - rr
    - only_high_priority
    - ret
    - ret_high_priority
    argTypes:
    - CaRemote*
    - int
    - CaChunkID*
    - bool*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 828
        line_start: 828
        source_file: /src/casync/src/caremote.c
    - condition: (ret)
      pos:
        line_end: 829
        line_start: 829
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 885
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 885
    functionName: ca_remote_dequeue_request
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_chunk_id_parse
    - asprintf
    - readlinkat_malloc
    - assert
    - free
    linkageType: ''
    returnType: int
    signature: int ca_remote_dequeue_request(CaRemote *rr, int only_high_priority,
      CaChunkID *ret, bool *ret_high_priority)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:890,1
    - Dst: open
      Src: /src/casync/src/caremote.c:904,1
    - Dst: tempfn_random
      Src: /src/casync/src/caremote.c:912,1
    - Dst: open
      Src: /src/casync/src/caremote.c:917,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - rr
    - f
    - flags
    argTypes:
    - CaRemote*
    - CaRemoteFile*
    - int
    assertStmts:
    - condition: (f)
      pos:
        line_end: 889
        line_start: 889
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 922
      start: 887
    functionDepth: 3
    functionLinenumber: 887
    functionLinenumberEnd: 922
    functionName: ca_remote_file_open
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - tempfn_random
    - open
    linkageType: ''
    returnType: int
    signature: int ca_remote_file_open(CaRemote *rr, CaRemoteFile *f, int flags)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:927,1
    - Dst: isempty
      Src: /src/casync/src/caremote.c:946,1
    - Dst: isempty
      Src: /src/casync/src/caremote.c:947,1
    - Dst: isempty
      Src: /src/casync/src/caremote.c:948,1
    - Dst: strv_isempty
      Src: /src/casync/src/caremote.c:949,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:952,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:953,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:954,1
    - Dst: pipe2
      Src: /src/casync/src/caremote.c:956,1
    - Dst: pipe2
      Src: /src/casync/src/caremote.c:959,1
    - Dst: safe_close_pair
      Src: /src/casync/src/caremote.c:960,1
    - Dst: fork
      Src: /src/casync/src/caremote.c:964,1
    - Dst: safe_close_pair
      Src: /src/casync/src/caremote.c:966,1
    - Dst: safe_close_pair
      Src: /src/casync/src/caremote.c:967,1
    - Dst: safe_close
      Src: /src/casync/src/caremote.c:977,1
    - Dst: safe_close
      Src: /src/casync/src/caremote.c:978,1
    - Dst: dup3
      Src: /src/casync/src/caremote.c:980,1
    - Dst: log_error
      Src: /src/casync/src/caremote.c:981,1
    - Dst: safe_close
      Src: /src/casync/src/caremote.c:985,1
    - Dst: dup3
      Src: /src/casync/src/caremote.c:987,1
    - Dst: log_error
      Src: /src/casync/src/caremote.c:988,1
    - Dst: safe_close
      Src: /src/casync/src/caremote.c:992,1
    - Dst: prctl
      Src: /src/casync/src/caremote.c:994,1
    - Dst: strv_length
      Src: /src/casync/src/caremote.c:996,1
    - Dst: newa
      Src: /src/casync/src/caremote.c:1004,1
    - Dst: getenv
      Src: /src/casync/src/caremote.c:1009,1
    - Dst: strjoina
      Src: /src/casync/src/caremote.c:1013,1
    - Dst: strlen
      Src: /src/casync/src/caremote.c:1019,1
    - Dst: getenv
      Src: /src/casync/src/caremote.c:1021,1
    - Dst: getenv
      Src: /src/casync/src/caremote.c:1024,1
    - Dst: strndupa
      Src: /src/casync/src/caremote.c:1029,1
    - Dst: asprintf
      Src: /src/casync/src/caremote.c:1034,1
    - Dst: log_oom
      Src: /src/casync/src/caremote.c:1036,1
    - Dst: asprintf
      Src: /src/casync/src/caremote.c:1042,1
    - Dst: log_oom
      Src: /src/casync/src/caremote.c:1044,1
    - Dst: STRV_FOREACH
      Src: /src/casync/src/caremote.c:1056,1
    - Dst: execv
      Src: /src/casync/src/caremote.c:1062,1
    - Dst: execvp
      Src: /src/casync/src/caremote.c:1064,1
    - Dst: log_error
      Src: /src/casync/src/caremote.c:1066,1
    - Dst: _exit
      Src: /src/casync/src/caremote.c:1068,1
    - Dst: safe_close
      Src: /src/casync/src/caremote.c:1074,1
    - Dst: safe_close
      Src: /src/casync/src/caremote.c:1075,1
    - Dst: ca_remote_file_open
      Src: /src/casync/src/caremote.c:1081,1
    - Dst: ca_remote_file_open
      Src: /src/casync/src/caremote.c:1088,1
    - Dst: ca_remote_file_open
      Src: /src/casync/src/caremote.c:1096,1
    - Dst: ca_remote_file_open
      Src: /src/casync/src/caremote.c:1103,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 120
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 926
        line_start: 926
        source_file: /src/casync/src/caremote.c
    - condition: (rr->input_fd < 0)
      pos:
        line_end: 951
        line_start: 951
        source_file: /src/casync/src/caremote.c
    - condition: (rr->output_fd < 0)
      pos:
        line_end: 952
        line_start: 952
        source_file: /src/casync/src/caremote.c
    - condition: (rr->pid <= 1)
      pos:
        line_end: 953
        line_start: 953
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1109
      start: 924
    functionDepth: 4
    functionLinenumber: 924
    functionLinenumberEnd: 1109
    functionName: ca_remote_start
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - _exit
    - safe_close_pair
    - isempty
    - strv_isempty
    - execvp
    - fork
    - newa
    - ca_remote_file_open
    - log_oom
    - asprintf
    - assert
    - strjoina
    - execv
    - pipe2
    - strv_length
    - dup3
    - strndupa
    - safe_close
    - getenv
    - strlen
    - prctl
    - STRV_FOREACH
    - log_error
    linkageType: ''
    returnType: int
    signature: int ca_remote_start(CaRemote *rr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1116,1
    - Dst: ca_remote_get_read_size
      Src: /src/casync/src/caremote.c:1118,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:1120,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:1123,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/caremote.c:1125,1
    - Dst: read
      Src: /src/casync/src/caremote.c:1129,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/caremote.c:1130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1115
        line_start: 1115
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1137
      start: 1111
    functionDepth: 3
    functionLinenumber: 1111
    functionLinenumberEnd: 1137
    functionName: ca_remote_read
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_extend
    - ca_remote_get_read_size
    - realloc_buffer_shorten
    - read
    - assert
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_remote_read(CaRemote *rr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1142,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:1144,1
    - Dst: write
      Src: /src/casync/src/caremote.c:1147,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caremote.c:1147,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:1147,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/src/caremote.c:1151,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:1153,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1141
        line_start: 1141
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1157
      start: 1139
    functionDepth: 2
    functionLinenumber: 1139
    functionLinenumberEnd: 1157
    functionName: ca_remote_write
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_data
    - write
    - assert
    - realloc_buffer_advance
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_remote_write(CaRemote *rr)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 14
    argCount: 2
    argNames:
    - operations
    - services
    argTypes:
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1159
    functionDepth: 0
    functionLinenumber: 1159
    functionLinenumberEnd: 1176
    functionName: operations_and_services_compatible
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operations_and_services_compatible(uint64_t operations, uint64_t
      services)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1181,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1182,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1184,1
    - Dst: operations_and_services_compatible
      Src: /src/casync/src/caremote.c:1193,1
    - Dst: operations_and_services_compatible
      Src: /src/casync/src/caremote.c:1195,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - rr
    - hello
    argTypes:
    - CaRemote*
    - CaProtocolHello*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1180
        line_start: 1180
        source_file: /src/casync/src/caremote.c
    - condition: (hello)
      pos:
        line_end: 1181
        line_start: 1181
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1206
      start: 1178
    functionDepth: 1
    functionLinenumber: 1178
    functionLinenumberEnd: 1206
    functionName: ca_remote_process_hello
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - operations_and_services_compatible
    - read_le64
    linkageType: ''
    returnType: int
    signature: int ca_remote_process_hello(CaRemote *rr, const CaProtocolHello *hello)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1212,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1213,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1218,1
    - Dst: loop_write
      Src: /src/casync/src/caremote.c:1221,1
    - Dst: realloc_buffer_append
      Src: /src/casync/src/caremote.c:1225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - f
    - p
    argTypes:
    - CaRemoteFile*
    - CaProtocolFile*
    assertStmts:
    - condition: (f)
      pos:
        line_end: 1211
        line_start: 1211
        source_file: /src/casync/src/caremote.c
    - condition: (p)
      pos:
        line_end: 1212
        line_start: 1212
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1230
      start: 1208
    functionDepth: 4
    functionLinenumber: 1208
    functionLinenumberEnd: 1230
    functionName: ca_remote_file_process
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - realloc_buffer_append
    - loop_write
    - read_le64
    linkageType: ''
    returnType: int
    signature: int ca_remote_file_process(CaRemoteFile *f, const CaProtocolFile *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1233,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - f
    - eof
    argTypes:
    - CaRemoteFile*
    - CaProtocolFileEOF*
    assertStmts:
    - condition: (f)
      pos:
        line_end: 1232
        line_start: 1232
        source_file: /src/casync/src/caremote.c
    - condition: (eof)
      pos:
        line_end: 1233
        line_start: 1233
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1241
      start: 1232
    functionDepth: 0
    functionLinenumber: 1232
    functionLinenumberEnd: 1241
    functionName: ca_remote_file_process_eof
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_remote_file_process_eof(CaRemoteFile *f, const CaProtocolFileEOF
      *eof)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1246,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1247,1
    - Dst: ca_remote_file_process
      Src: /src/casync/src/caremote.c:1249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - rr
    - p
    argTypes:
    - CaRemote*
    - CaProtocolFile*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1245
        line_start: 1245
        source_file: /src/casync/src/caremote.c
    - condition: (p)
      pos:
        line_end: 1246
        line_start: 1246
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1254
      start: 1243
    functionDepth: 5
    functionLinenumber: 1243
    functionLinenumberEnd: 1254
    functionName: ca_remote_process_index
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_file_process
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_remote_process_index(CaRemote *rr, const CaProtocolFile *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1259,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1260,1
    - Dst: ca_remote_file_process_eof
      Src: /src/casync/src/caremote.c:1262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - rr
    - eof
    argTypes:
    - CaRemote*
    - CaProtocolFileEOF*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1258
        line_start: 1258
        source_file: /src/casync/src/caremote.c
    - condition: (eof)
      pos:
        line_end: 1259
        line_start: 1259
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1267
      start: 1256
    functionDepth: 1
    functionLinenumber: 1256
    functionLinenumberEnd: 1267
    functionName: ca_remote_process_index_eof
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_remote_file_process_eof
    linkageType: ''
    returnType: int
    signature: int ca_remote_process_index_eof(CaRemote *rr, const CaProtocolFileEOF
      *eof)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1272,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1273,1
    - Dst: ca_remote_file_process
      Src: /src/casync/src/caremote.c:1275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - rr
    - p
    argTypes:
    - CaRemote*
    - CaProtocolFile*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1271
        line_start: 1271
        source_file: /src/casync/src/caremote.c
    - condition: (p)
      pos:
        line_end: 1272
        line_start: 1272
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1280
      start: 1269
    functionDepth: 5
    functionLinenumber: 1269
    functionLinenumberEnd: 1280
    functionName: ca_remote_process_archive
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_file_process
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_remote_process_archive(CaRemote *rr, const CaProtocolFile *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1285,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1286,1
    - Dst: ca_remote_file_process_eof
      Src: /src/casync/src/caremote.c:1288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - rr
    - eof
    argTypes:
    - CaRemote*
    - CaProtocolFileEOF*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1284
        line_start: 1284
        source_file: /src/casync/src/caremote.c
    - condition: (eof)
      pos:
        line_end: 1285
        line_start: 1285
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1293
      start: 1282
    functionDepth: 1
    functionLinenumber: 1282
    functionLinenumberEnd: 1293
    functionName: ca_remote_process_archive_eof
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_remote_file_process_eof
    linkageType: ''
    returnType: int
    signature: int ca_remote_process_archive_eof(CaRemote *rr, const CaProtocolFileEOF
      *eof)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1300,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1301,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1303,1
    - Dst: ca_remote_enqueue_request
      Src: /src/casync/src/caremote.c:1306,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - rr
    - req
    argTypes:
    - CaRemote*
    - CaProtocolRequest*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1299
        line_start: 1299
        source_file: /src/casync/src/caremote.c
    - condition: (req)
      pos:
        line_end: 1300
        line_start: 1300
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1312
      start: 1295
    functionDepth: 6
    functionLinenumber: 1295
    functionLinenumberEnd: 1312
    functionName: ca_remote_process_request
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    - ca_remote_enqueue_request
    linkageType: ''
    returnType: int
    signature: int ca_remote_process_request(CaRemote *rr, const CaProtocolRequest
      *req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1318,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1319,1
    - Dst: memcpy
      Src: /src/casync/src/caremote.c:1324,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1327,1
    - Dst: ca_chunk_file_save
      Src: /src/casync/src/caremote.c:1329,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1332,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - rr
    - chunk
    argTypes:
    - CaRemote*
    - CaProtocolChunk*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1317
        line_start: 1317
        source_file: /src/casync/src/caremote.c
    - condition: (chunk)
      pos:
        line_end: 1318
        line_start: 1318
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1343
      start: 1314
    functionDepth: 3
    functionLinenumber: 1314
    functionLinenumberEnd: 1343
    functionName: ca_remote_process_chunk
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    - memcpy
    - ca_chunk_file_save
    linkageType: ''
    returnType: int
    signature: int ca_remote_process_chunk(CaRemote *rr, const CaProtocolChunk *chunk)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1348,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1349,1
    - Dst: ca_chunk_file_mark_missing
      Src: /src/casync/src/caremote.c:1354,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - rr
    - missing
    argTypes:
    - CaRemote*
    - CaProtocolMissing*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1347
        line_start: 1347
        source_file: /src/casync/src/caremote.c
    - condition: (missing)
      pos:
        line_end: 1348
        line_start: 1348
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1361
      start: 1345
    functionDepth: 2
    functionLinenumber: 1345
    functionLinenumberEnd: 1361
    functionName: ca_remote_process_missing
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_chunk_file_mark_missing
    linkageType: ''
    returnType: int
    signature: int ca_remote_process_missing(CaRemote *rr, const CaProtocolMissing
      *missing)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1364,1
    - Dst: rename
      Src: /src/casync/src/caremote.c:1373,1
    - Dst: mfree
      Src: /src/casync/src/caremote.c:1376,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - CaRemoteFile*
    assertStmts:
    - condition: (f)
      pos:
        line_end: 1363
        line_start: 1363
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1379
      start: 1363
    functionDepth: 1
    functionLinenumber: 1363
    functionLinenumberEnd: 1379
    functionName: ca_remote_file_install
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - rename
    - mfree
    linkageType: ''
    returnType: int
    signature: int ca_remote_file_install(CaRemoteFile *f)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1384,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1385,1
    - Dst: ca_remote_file_install
      Src: /src/casync/src/caremote.c:1387,1
    - Dst: ca_remote_file_install
      Src: /src/casync/src/caremote.c:1391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - rr
    - goodbye
    argTypes:
    - CaRemote*
    - CaProtocolGoodbye*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1383
        line_start: 1383
        source_file: /src/casync/src/caremote.c
    - condition: (goodbye)
      pos:
        line_end: 1384
        line_start: 1384
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1398
      start: 1381
    functionDepth: 2
    functionLinenumber: 1381
    functionLinenumberEnd: 1398
    functionName: ca_remote_process_goodbye
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_file_install
    - assert
    linkageType: ''
    returnType: int
    signature: int ca_remote_process_goodbye(CaRemote *rr, const CaProtocolGoodbye
      *goodbye)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1401,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1402,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rr
    - a
    argTypes:
    - CaRemote*
    - CaProtocolAbort*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1400
        line_start: 1400
        source_file: /src/casync/src/caremote.c
    - condition: (a)
      pos:
        line_end: 1401
        line_start: 1401
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1408
      start: 1400
    functionDepth: 1
    functionLinenumber: 1400
    functionLinenumberEnd: 1408
    functionName: ca_remote_process_abort
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: int
    signature: int ca_remote_process_abort(CaRemote *rr, const CaProtocolAbort *a)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1413,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1414,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1416,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1418,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1423,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1425,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - rr
    - h
    argTypes:
    - CaRemote*
    - CaProtocolHeader*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1412
        line_start: 1412
        source_file: /src/casync/src/caremote.c
    - condition: (h)
      pos:
        line_end: 1413
        line_start: 1413
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1429
      start: 1410
    functionDepth: 1
    functionLinenumber: 1410
    functionLinenumberEnd: 1429
    functionName: validate_hello
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: CaProtocolHello
    signature: CaProtocolHello * validate_hello(CaRemote *rr, const CaProtocolHeader
      *h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1432,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1433,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1435,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - rr
    - type
    - h
    argTypes:
    - CaRemote*
    - uint64_t
    - CaProtocolHeader*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1431
        line_start: 1431
        source_file: /src/casync/src/caremote.c
    - condition: (h)
      pos:
        line_end: 1432
        line_start: 1432
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1441
      start: 1431
    functionDepth: 1
    functionLinenumber: 1431
    functionLinenumberEnd: 1441
    functionName: validate_file
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: CaProtocolFile
    signature: CaProtocolFile * validate_file(CaRemote *rr, uint64_t type, const CaProtocolHeader
      *h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1444,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1445,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1447,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - rr
    - type
    - h
    argTypes:
    - CaRemote*
    - uint64_t
    - CaProtocolHeader*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1443
        line_start: 1443
        source_file: /src/casync/src/caremote.c
    - condition: (h)
      pos:
        line_end: 1444
        line_start: 1444
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1453
      start: 1443
    functionDepth: 1
    functionLinenumber: 1443
    functionLinenumberEnd: 1453
    functionName: validate_file_eof
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: CaProtocolFileEOF
    signature: CaProtocolFileEOF * validate_file_eof(CaRemote *rr, uint64_t type,
      const CaProtocolHeader *h)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1458,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1459,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1461,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1463,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1465,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1469,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - rr
    - h
    argTypes:
    - CaRemote*
    - CaProtocolHeader*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1457
        line_start: 1457
        source_file: /src/casync/src/caremote.c
    - condition: (h)
      pos:
        line_end: 1458
        line_start: 1458
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1473
      start: 1455
    functionDepth: 1
    functionLinenumber: 1455
    functionLinenumberEnd: 1473
    functionName: validate_request
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: CaProtocolRequest
    signature: CaProtocolRequest * validate_request(CaRemote *rr, const CaProtocolHeader
      *h)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1479,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1480,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1482,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1484,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1490,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - rr
    - h
    argTypes:
    - CaRemote*
    - CaProtocolHeader*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1478
        line_start: 1478
        source_file: /src/casync/src/caremote.c
    - condition: (h)
      pos:
        line_end: 1479
        line_start: 1479
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1495
      start: 1475
    functionDepth: 1
    functionLinenumber: 1475
    functionLinenumberEnd: 1495
    functionName: validate_chunk
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: CaProtocolChunk
    signature: CaProtocolChunk * validate_chunk(CaRemote *rr, const CaProtocolHeader
      *h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1498,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1499,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1501,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1503,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - rr
    - h
    argTypes:
    - CaRemote*
    - CaProtocolHeader*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1497
        line_start: 1497
        source_file: /src/casync/src/caremote.c
    - condition: (h)
      pos:
        line_end: 1498
        line_start: 1498
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1507
      start: 1497
    functionDepth: 1
    functionLinenumber: 1497
    functionLinenumberEnd: 1507
    functionName: validate_missing
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: CaProtocolMissing
    signature: CaProtocolMissing * validate_missing(CaRemote *rr, const CaProtocolHeader
      *h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1510,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1511,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1513,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - rr
    - h
    argTypes:
    - CaRemote*
    - CaProtocolHeader*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1509
        line_start: 1509
        source_file: /src/casync/src/caremote.c
    - condition: (h)
      pos:
        line_end: 1510
        line_start: 1510
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1519
      start: 1509
    functionDepth: 1
    functionLinenumber: 1509
    functionLinenumberEnd: 1519
    functionName: validate_goodbye
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: CaProtocolGoodbye
    signature: CaProtocolGoodbye * validate_goodbye(CaRemote *rr, const CaProtocolHeader
      *h)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1526,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1528,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1530,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1535,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1538,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - rr
    - h
    argTypes:
    - CaRemote*
    - CaProtocolHeader*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1525
        line_start: 1525
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1548
      start: 1521
    functionDepth: 1
    functionLinenumber: 1521
    functionLinenumberEnd: 1548
    functionName: validate_abort
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: CaProtocolAbort
    signature: CaProtocolAbort * validate_abort(CaRemote *rr, const CaProtocolHeader
      *h)
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1555,1
    - Dst: IN_SET
      Src: /src/casync/src/caremote.c:1557,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:1560,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caremote.c:1563,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1565,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:1571,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1582,1
    - Dst: validate_hello
      Src: /src/casync/src/caremote.c:1590,1
    - Dst: ca_remote_process_hello
      Src: /src/casync/src/caremote.c:1594,1
    - Dst: validate_file
      Src: /src/casync/src/caremote.c:1607,1
    - Dst: ca_remote_process_index
      Src: /src/casync/src/caremote.c:1611,1
    - Dst: validate_file_eof
      Src: /src/casync/src/caremote.c:1624,1
    - Dst: ca_remote_process_index_eof
      Src: /src/casync/src/caremote.c:1628,1
    - Dst: validate_file
      Src: /src/casync/src/caremote.c:1641,1
    - Dst: ca_remote_process_archive
      Src: /src/casync/src/caremote.c:1645,1
    - Dst: validate_file_eof
      Src: /src/casync/src/caremote.c:1658,1
    - Dst: ca_remote_process_archive_eof
      Src: /src/casync/src/caremote.c:1662,1
    - Dst: validate_request
      Src: /src/casync/src/caremote.c:1675,1
    - Dst: ca_remote_process_request
      Src: /src/casync/src/caremote.c:1679,1
    - Dst: validate_chunk
      Src: /src/casync/src/caremote.c:1692,1
    - Dst: ca_remote_process_chunk
      Src: /src/casync/src/caremote.c:1696,1
    - Dst: validate_missing
      Src: /src/casync/src/caremote.c:1709,1
    - Dst: ca_remote_process_missing
      Src: /src/casync/src/caremote.c:1713,1
    - Dst: validate_goodbye
      Src: /src/casync/src/caremote.c:1723,1
    - Dst: ca_remote_process_goodbye
      Src: /src/casync/src/caremote.c:1727,1
    - Dst: validate_abort
      Src: /src/casync/src/caremote.c:1734,1
    - Dst: ca_remote_process_abort
      Src: /src/casync/src/caremote.c:1738,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/src/caremote.c:1749,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 129
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1554
        line_start: 1554
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1756
      start: 1550
    functionDepth: 7
    functionLinenumber: 1550
    functionLinenumberEnd: 1756
    functionName: ca_remote_process_message
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_process_abort
    - IN_SET
    - validate_goodbye
    - validate_abort
    - ca_remote_process_index_eof
    - validate_chunk
    - ca_remote_process_goodbye
    - validate_request
    - realloc_buffer_advance
    - ca_remote_process_hello
    - assert
    - ca_remote_process_chunk
    - realloc_buffer_data
    - validate_file
    - ca_remote_process_request
    - ca_remote_process_index
    - validate_file_eof
    - ca_remote_process_archive_eof
    - ca_remote_process_missing
    - validate_missing
    - ca_remote_process_archive
    - read_le64
    - validate_hello
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_remote_process_message(CaRemote *rr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1761,1
    - Dst: realloc_buffer_extend0
      Src: /src/casync/src/caremote.c:1766,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:1770,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:1771,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:1772,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1760
        line_start: 1760
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1776
      start: 1758
    functionDepth: 4
    functionLinenumber: 1758
    functionLinenumberEnd: 1776
    functionName: ca_remote_send_hello
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - write_le64
    - assert
    - realloc_buffer_extend0
    linkageType: ''
    returnType: int
    signature: int ca_remote_send_hello(CaRemote *rr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1789,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1790,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:1798,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/caremote.c:1804,1
    - Dst: read
      Src: /src/casync/src/caremote.c:1808,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/caremote.c:1812,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/caremote.c:1817,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:1822,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:1823,1
    - Dst: realloc_buffer_shorten
      Src: /src/casync/src/caremote.c:1829,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:1834,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:1835,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 5
    argNames:
    - rr
    - f
    - file_type
    - eof_type
    - request_step
    argTypes:
    - CaRemote*
    - CaRemoteFile*
    - uint64_t
    - uint64_t
    - int
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1788
        line_start: 1788
        source_file: /src/casync/src/caremote.c
    - condition: (f)
      pos:
        line_end: 1789
        line_start: 1789
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1839
      start: 1778
    functionDepth: 3
    functionLinenumber: 1778
    functionLinenumberEnd: 1839
    functionName: ca_remote_send_file
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_extend
    - realloc_buffer_shorten
    - read
    - write_le64
    - assert
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: "int ca_remote_send_file(\n                CaRemote *rr,\n                CaRemoteFile
      *f,\n                uint64_t file_type,\n                uint64_t eof_type,\n
      \               int request_step)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1842,1
    - Dst: ca_remote_send_file
      Src: /src/casync/src/caremote.c:1848,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1841
        line_start: 1841
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1854
      start: 1841
    functionDepth: 4
    functionLinenumber: 1841
    functionLinenumberEnd: 1854
    functionName: ca_remote_send_index
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_remote_send_file
    linkageType: ''
    returnType: int
    signature: int ca_remote_send_index(CaRemote *rr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1857,1
    - Dst: ca_remote_send_file
      Src: /src/casync/src/caremote.c:1863,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1856
        line_start: 1856
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1869
      start: 1856
    functionDepth: 4
    functionLinenumber: 1856
    functionLinenumberEnd: 1869
    functionName: ca_remote_send_archive
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_remote_send_file
    linkageType: ''
    returnType: int
    signature: int ca_remote_send_archive(CaRemote *rr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:1875,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:1885,1
    - Dst: ca_remote_dequeue_request
      Src: /src/casync/src/caremote.c:1894,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/caremote.c:1902,1
    - Dst: realloc_buffer_data_offset
      Src: /src/casync/src/caremote.c:1906,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:1907,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:1909,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1909,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:1911,1
    - Dst: realloc_buffer_extend0
      Src: /src/casync/src/caremote.c:1914,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:1918,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:1919,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:1920,1
    - Dst: memcpy
      Src: /src/casync/src/caremote.c:1925,1
    - Dst: read_le64
      Src: /src/casync/src/caremote.c:1929,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 1874
        line_start: 1874
        source_file: /src/casync/src/caremote.c
    - condition: (req)
      pos:
        line_end: 1906
        line_start: 1906
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 1934
      start: 1871
    functionDepth: 4
    functionLinenumber: 1871
    functionLinenumberEnd: 1934
    functionName: ca_remote_send_request
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_extend
    - memcpy
    - ca_remote_dequeue_request
    - realloc_buffer_data_offset
    - read_le64
    - write_le64
    - assert
    - realloc_buffer_extend0
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_remote_send_request(CaRemote *rr)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caremote.c:1944,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caremote.c:1945,1
    - Dst: ca_remote_start
      Src: /src/casync/src/caremote.c:1947,1
    - Dst: ca_remote_write
      Src: /src/casync/src/caremote.c:1951,1
    - Dst: ca_remote_send_hello
      Src: /src/casync/src/caremote.c:1955,1
    - Dst: ca_remote_process_message
      Src: /src/casync/src/caremote.c:1959,1
    - Dst: ca_remote_send_request
      Src: /src/casync/src/caremote.c:1963,1
    - Dst: ca_remote_send_index
      Src: /src/casync/src/caremote.c:1967,1
    - Dst: ca_remote_send_archive
      Src: /src/casync/src/caremote.c:1971,1
    - Dst: ca_remote_read
      Src: /src/casync/src/caremote.c:1975,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1936
    functionDepth: 8
    functionLinenumber: 1936
    functionLinenumberEnd: 1980
    functionName: ca_remote_step
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - ca_remote_write
    - ca_remote_send_index
    - ca_remote_read
    - ca_remote_send_request
    - ca_remote_send_archive
    - realloc_buffer_empty
    - ca_remote_process_message
    - ca_remote_start
    - ca_remote_send_hello
    linkageType: ''
    returnType: int
    signature: int ca_remote_step(CaRemote *rr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:1994,1
    - Dst: ca_remote_get_read_size
      Src: /src/casync/src/caremote.c:1994,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2000,1
    - Dst: nsec_to_timespec
      Src: /src/casync/src/caremote.c:2012,1
    - Dst: ppoll
      Src: /src/casync/src/caremote.c:2014,1
    - Dst: ppoll
      Src: /src/casync/src/caremote.c:2016,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - rr
    - timeout_nsec
    - ss
    argTypes:
    - CaRemote*
    - uint64_t
    - sigset_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2021
      start: 1982
    functionDepth: 2
    functionLinenumber: 1982
    functionLinenumberEnd: 2021
    functionName: ca_remote_poll
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached:
    - ppoll
    - nsec_to_timespec
    - ca_remote_get_read_size
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_remote_poll(CaRemote *rr, uint64_t timeout_nsec, const sigset_t
      *ss)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/caremote.c:2037,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caremote.c:2047,1
    - Dst: ca_decompress
      Src: /src/casync/src/caremote.c:2049,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caremote.c:2053,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2054,1
    - Dst: ca_digest_new
      Src: /src/casync/src/caremote.c:2064,1
    - Dst: ca_chunk_id_make
      Src: /src/casync/src/caremote.c:2069,1
    - Dst: ca_chunk_id_equal
      Src: /src/casync/src/caremote.c:2073,1
    - Dst: ca_digest_get_type
      Src: /src/casync/src/caremote.c:2080,1
    - Dst: ca_digest_set_type
      Src: /src/casync/src/caremote.c:2090,1
    - Dst: ca_chunk_id_make
      Src: /src/casync/src/caremote.c:2094,1
    - Dst: ca_chunk_id_equal
      Src: /src/casync/src/caremote.c:2098,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 50
    argCount: 5
    argNames:
    - rr
    - id
    - compression
    - p
    - l
    argTypes:
    - CaRemote*
    - CaChunkID*
    - CaChunkCompression
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2106
      start: 2023
    functionDepth: 4
    functionLinenumber: 2023
    functionLinenumberEnd: 2106
    functionName: ca_remote_validate_chunk
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_data
    - IN_SET
    - ca_digest_new
    - ca_digest_set_type
    - ca_chunk_id_make
    - realloc_buffer_empty
    - ca_decompress
    - ca_chunk_id_equal
    - ca_digest_get_type
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: "int ca_remote_validate_chunk(\n                CaRemote *rr,\n                const
      CaChunkID *id,\n                CaChunkCompression compression,\n                const
      void *p,\n                size_t l)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_init_cache
      Src: /src/casync/src/caremote.c:2134,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caremote.c:2138,1
    - Dst: ca_chunk_file_load
      Src: /src/casync/src/caremote.c:2140,1
    - Dst: ca_remote_enqueue_request
      Src: /src/casync/src/caremote.c:2143,1
    - Dst: ca_remote_validate_chunk
      Src: /src/casync/src/caremote.c:2158,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caremote.c:2158,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2158,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caremote.c:2162,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2163,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2169,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 7
    argNames:
    - rr
    - chunk_id
    - high_priority
    - desired_compression
    - ret
    - ret_size
    - ret_effective_compression
    argTypes:
    - CaRemote*
    - CaChunkID*
    - bool
    - CaChunkCompression
    - void**
    - uint64_t*
    - CaChunkCompression*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2172
      start: 2108
    functionDepth: 6
    functionLinenumber: 2108
    functionLinenumberEnd: 2172
    functionName: ca_remote_request
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached:
    - realloc_buffer_data
    - ca_chunk_file_load
    - ca_remote_enqueue_request
    - ca_remote_validate_chunk
    - realloc_buffer_empty
    - ca_remote_init_cache
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: "int ca_remote_request(\n                CaRemote *rr,\n                const
      CaChunkID *chunk_id,\n                bool high_priority,\n                CaChunkCompression
      desired_compression,\n                const void **ret,\n                uint64_t
      *ret_size,\n                CaChunkCompression *ret_effective_compression)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_enqueue_request
      Src: /src/casync/src/caremote.c:2186,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - rr
    - chunk_id
    - high_priority
    argTypes:
    - CaRemote*
    - CaChunkID*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2187
      start: 2174
    functionDepth: 6
    functionLinenumber: 2174
    functionLinenumberEnd: 2187
    functionName: ca_remote_request_async
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached:
    - ca_remote_enqueue_request
    linkageType: ''
    returnType: int
    signature: int ca_remote_request_async(CaRemote *rr, const CaChunkID *chunk_id,
      bool high_priority)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_dequeue_request
      Src: /src/casync/src/caremote.c:2201,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - rr
    - ret
    argTypes:
    - CaRemote*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2202
      start: 2189
    functionDepth: 2
    functionLinenumber: 2189
    functionLinenumberEnd: 2202
    functionName: ca_remote_next_request
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - ca_remote_dequeue_request
    linkageType: ''
    returnType: int
    signature: int ca_remote_next_request(CaRemote *rr, CaChunkID *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2219,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2223
      start: 2204
    functionDepth: 1
    functionLinenumber: 2204
    functionLinenumberEnd: 2223
    functionName: ca_remote_can_put_chunk
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_remote_can_put_chunk(CaRemote *rr)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: IN_SET
      Src: /src/casync/src/caremote.c:2246,1
    - Dst: ca_remote_can_put_chunk
      Src: /src/casync/src/caremote.c:2253,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/caremote.c:2265,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2269,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2270,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2271,1
    - Dst: memcpy
      Src: /src/casync/src/caremote.c:2273,1
    - Dst: memcpy
      Src: /src/casync/src/caremote.c:2274,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 5
    argNames:
    - rr
    - chunk_id
    - compression
    - data
    - size
    argTypes:
    - CaRemote*
    - CaChunkID*
    - CaChunkCompression
    - void*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2277
      start: 2225
    functionDepth: 3
    functionLinenumber: 2225
    functionLinenumberEnd: 2277
    functionName: ca_remote_put_chunk
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - ca_remote_can_put_chunk
    - memcpy
    - IN_SET
    - write_le64
    - realloc_buffer_extend
    linkageType: ''
    returnType: int
    signature: "int ca_remote_put_chunk(\n                CaRemote *rr,\n                const
      CaChunkID *chunk_id,\n                CaChunkCompression compression,\n                const
      void *data,\n                uint64_t size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_can_put_chunk
      Src: /src/casync/src/caremote.c:2292,1
    - Dst: realloc_buffer_extend0
      Src: /src/casync/src/caremote.c:2298,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2302,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2303,1
    - Dst: memcpy
      Src: /src/casync/src/caremote.c:2305,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - rr
    - chunk_id
    argTypes:
    - CaRemote*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2308
      start: 2279
    functionDepth: 4
    functionLinenumber: 2279
    functionLinenumberEnd: 2308
    functionName: ca_remote_put_missing
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - write_le64
    - ca_remote_can_put_chunk
    - realloc_buffer_extend0
    - memcpy
    linkageType: ''
    returnType: int
    signature: int ca_remote_put_missing(CaRemote *rr, const CaChunkID *chunk_id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:2311,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:2312,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2322,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - rr
    - f
    argTypes:
    - CaRemote*
    - CaRemoteFile*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 2310
        line_start: 2310
        source_file: /src/casync/src/caremote.c
    - condition: (f)
      pos:
        line_end: 2311
        line_start: 2311
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 2326
      start: 2310
    functionDepth: 1
    functionLinenumber: 2310
    functionLinenumberEnd: 2326
    functionName: ca_remote_file_can_put
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_remote_file_can_put(CaRemote *rr, CaRemoteFile *f)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_file_can_put
      Src: /src/casync/src/caremote.c:2338,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2339
      start: 2328
    functionDepth: 2
    functionLinenumber: 2328
    functionLinenumberEnd: 2339
    functionName: ca_remote_can_put_index
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - ca_remote_file_can_put
    linkageType: ''
    returnType: int
    signature: int ca_remote_can_put_index(CaRemote *rr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:2345,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:2346,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/caremote.c:2354,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2358,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2359,1
    - Dst: memcpy
      Src: /src/casync/src/caremote.c:2361,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - rr
    - f
    - type
    - data
    - size
    argTypes:
    - CaRemote*
    - CaRemoteFile*
    - uint64_t
    - void*
    - size_t
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 2344
        line_start: 2344
        source_file: /src/casync/src/caremote.c
    - condition: (f)
      pos:
        line_end: 2345
        line_start: 2345
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 2364
      start: 2341
    functionDepth: 3
    functionLinenumber: 2341
    functionLinenumberEnd: 2364
    functionName: ca_remote_file_put
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - write_le64
    - assert
    - realloc_buffer_extend
    - memcpy
    linkageType: ''
    returnType: int
    signature: int ca_remote_file_put(CaRemote *rr, CaRemoteFile *f, uint64_t type,
      const void *data, size_t size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_can_put_index
      Src: /src/casync/src/caremote.c:2380,1
    - Dst: ca_remote_file_put
      Src: /src/casync/src/caremote.c:2386,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - rr
    - data
    - size
    argTypes:
    - CaRemote*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2387
      start: 2366
    functionDepth: 4
    functionLinenumber: 2366
    functionLinenumberEnd: 2387
    functionName: ca_remote_put_index
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - ca_remote_file_put
    - ca_remote_can_put_index
    linkageType: ''
    returnType: int
    signature: int ca_remote_put_index(CaRemote *rr, const void *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:2392,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:2393,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/caremote.c:2395,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2399,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - rr
    - f
    - type
    argTypes:
    - CaRemote*
    - CaRemoteFile*
    - uint64_t
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 2391
        line_start: 2391
        source_file: /src/casync/src/caremote.c
    - condition: (f)
      pos:
        line_end: 2392
        line_start: 2392
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 2405
      start: 2389
    functionDepth: 3
    functionLinenumber: 2389
    functionLinenumberEnd: 2405
    functionName: ca_remote_file_put_eof
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - write_le64
    - assert
    - realloc_buffer_extend
    linkageType: ''
    returnType: int
    signature: int ca_remote_file_put_eof(CaRemote *rr, CaRemoteFile *f, uint64_t
      type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_can_put_index
      Src: /src/casync/src/caremote.c:2417,1
    - Dst: ca_remote_file_put_eof
      Src: /src/casync/src/caremote.c:2423,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2424
      start: 2407
    functionDepth: 4
    functionLinenumber: 2407
    functionLinenumberEnd: 2424
    functionName: ca_remote_put_index_eof
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - ca_remote_file_put_eof
    - ca_remote_can_put_index
    linkageType: ''
    returnType: int
    signature: int ca_remote_put_index_eof(CaRemote *rr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/caremote.c:2427,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:2428,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:2429,1
    - Dst: assert
      Src: /src/casync/src/caremote.c:2430,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2435,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caremote.c:2446,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2447,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - rr
    - f
    - ret
    - ret_size
    argTypes:
    - CaRemote*
    - CaRemoteFile*
    - void**
    - size_t*
    assertStmts:
    - condition: (rr)
      pos:
        line_end: 2426
        line_start: 2426
        source_file: /src/casync/src/caremote.c
    - condition: (ret)
      pos:
        line_end: 2428
        line_start: 2428
        source_file: /src/casync/src/caremote.c
    - condition: (ret_size)
      pos:
        line_end: 2429
        line_start: 2429
        source_file: /src/casync/src/caremote.c
    - condition: (f)
      pos:
        line_end: 2427
        line_start: 2427
        source_file: /src/casync/src/caremote.c
    constantsTouched: []
    func_position:
      end: 2450
      start: 2426
    functionDepth: 1
    functionLinenumber: 2426
    functionLinenumberEnd: 2450
    functionName: ca_remote_file_read
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - assert
    - realloc_buffer_data
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_remote_file_read(CaRemote *rr, CaRemoteFile *f, const void **ret,
      size_t *ret_size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_file_read
      Src: /src/casync/src/caremote.c:2464,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - rr
    - ret
    - ret_size
    argTypes:
    - CaRemote*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2465
      start: 2452
    functionDepth: 2
    functionLinenumber: 2452
    functionLinenumberEnd: 2465
    functionName: ca_remote_read_index
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached:
    - ca_remote_file_read
    linkageType: ''
    returnType: int
    signature: int ca_remote_read_index(CaRemote *rr, const void **ret, size_t *ret_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_file_can_put
      Src: /src/casync/src/caremote.c:2477,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2478
      start: 2467
    functionDepth: 2
    functionLinenumber: 2467
    functionLinenumberEnd: 2478
    functionName: ca_remote_can_put_archive
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - ca_remote_file_can_put
    linkageType: ''
    returnType: int
    signature: int ca_remote_can_put_archive(CaRemote *rr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_can_put_archive
      Src: /src/casync/src/caremote.c:2494,1
    - Dst: ca_remote_file_put
      Src: /src/casync/src/caremote.c:2500,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - rr
    - data
    - size
    argTypes:
    - CaRemote*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2501
      start: 2480
    functionDepth: 4
    functionLinenumber: 2480
    functionLinenumberEnd: 2501
    functionName: ca_remote_put_archive
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - ca_remote_file_put
    - ca_remote_can_put_archive
    linkageType: ''
    returnType: int
    signature: int ca_remote_put_archive(CaRemote *rr, const void *data, size_t size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_can_put_archive
      Src: /src/casync/src/caremote.c:2513,1
    - Dst: ca_remote_file_put_eof
      Src: /src/casync/src/caremote.c:2519,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2520
      start: 2503
    functionDepth: 4
    functionLinenumber: 2503
    functionLinenumberEnd: 2520
    functionName: ca_remote_put_archive_eof
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 2
    functionsReached:
    - ca_remote_file_put_eof
    - ca_remote_can_put_archive
    linkageType: ''
    returnType: int
    signature: int ca_remote_put_archive_eof(CaRemote *rr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_file_read
      Src: /src/casync/src/caremote.c:2534,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - rr
    - ret
    - ret_size
    argTypes:
    - CaRemote*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2535
      start: 2522
    functionDepth: 2
    functionLinenumber: 2522
    functionLinenumberEnd: 2535
    functionName: ca_remote_read_archive
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached:
    - ca_remote_file_read
    linkageType: ''
    returnType: int
    signature: int ca_remote_read_archive(CaRemote *rr, const void **ret, size_t *ret_size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_file_install
      Src: /src/casync/src/caremote.c:2548,1
    - Dst: ca_remote_file_install
      Src: /src/casync/src/caremote.c:2552,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/caremote.c:2556,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2560,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2561,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2566
      start: 2537
    functionDepth: 3
    functionLinenumber: 2537
    functionLinenumberEnd: 2566
    functionName: ca_remote_goodbye
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_file_install
    - realloc_buffer_extend
    - write_le64
    linkageType: ''
    returnType: int
    signature: int ca_remote_goodbye(CaRemote *rr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/casync/src/caremote.c:2583,1
    - Dst: realloc_buffer_extend
      Src: /src/casync/src/caremote.c:2585,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2589,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2590,1
    - Dst: write_le64
      Src: /src/casync/src/caremote.c:2592,1
    - Dst: strcpy
      Src: /src/casync/src/caremote.c:2593,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - rr
    - error
    - message
    argTypes:
    - CaRemote*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2597
      start: 2568
    functionDepth: 3
    functionLinenumber: 2568
    functionLinenumberEnd: 2597
    functionName: ca_remote_abort
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached:
    - write_le64
    - realloc_buffer_extend
    - strlen
    - strcpy
    linkageType: ''
    returnType: int
    signature: int ca_remote_abort(CaRemote *rr, int error, const char *message)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2599
    functionDepth: 0
    functionLinenumber: 2599
    functionLinenumberEnd: 2613
    functionName: ca_remote_has_pending_requests
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_has_pending_requests(CaRemote *rr)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/caremote.c:2643,1
    - Dst: ca_chunk_file_load
      Src: /src/casync/src/caremote.c:2645,1
    - Dst: ca_remote_validate_chunk
      Src: /src/casync/src/caremote.c:2649,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caremote.c:2649,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2649,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/caremote.c:2653,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2654,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 6
    argNames:
    - rr
    - desired_compression
    - ret_id
    - ret_data
    - ret_size
    - ret_effective_compression
    argTypes:
    - CaRemote*
    - CaChunkCompression
    - CaChunkID*
    - void**
    - size_t*
    - CaChunkCompression*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2668
      start: 2615
    functionDepth: 5
    functionLinenumber: 2615
    functionLinenumberEnd: 2668
    functionName: ca_remote_next_chunk
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - realloc_buffer_data
    - ca_chunk_file_load
    - ca_remote_validate_chunk
    - realloc_buffer_empty
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: "int ca_remote_next_chunk(\n                CaRemote *rr,\n                CaChunkCompression
      desired_compression,\n                CaChunkID *ret_id,\n                const
      void **ret_data,\n                size_t *ret_size,\n                CaChunkCompression
      *ret_effective_compression)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realloc_buffer_size
      Src: /src/casync/src/caremote.c:2676,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2677
      start: 2670
    functionDepth: 1
    functionLinenumber: 2670
    functionLinenumberEnd: 2677
    functionName: ca_remote_has_unwritten
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached:
    - realloc_buffer_size
    linkageType: ''
    returnType: int
    signature: int ca_remote_has_unwritten(CaRemote *rr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_has_pending_requests
      Src: /src/casync/src/caremote.c:2688,1
    - Dst: xopendirat
      Src: /src/casync/src/caremote.c:2695,1
    - Dst: readdir
      Src: /src/casync/src/caremote.c:2705,1
    - Dst: closedir
      Src: /src/casync/src/caremote.c:2708,1
    - Dst: dot_or_dot_dot
      Src: /src/casync/src/caremote.c:2716,1
    - Dst: closedir
      Src: /src/casync/src/caremote.c:2717,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2723
      start: 2679
    functionDepth: 4
    functionLinenumber: 2679
    functionLinenumberEnd: 2723
    functionName: ca_remote_has_chunks
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - ca_remote_has_pending_requests
    - closedir
    - readdir
    - xopendirat
    - dot_or_dot_dot
    linkageType: ''
    returnType: int
    signature: int ca_remote_has_chunks(CaRemote *rr)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/caremote.c:2745,1
    - Dst: strjoina
      Src: /src/casync/src/caremote.c:2748,1
    - Dst: readlinkat_malloc
      Src: /src/casync/src/caremote.c:2749,1
    - Dst: startswith
      Src: /src/casync/src/caremote.c:2756,1
    - Dst: startswith
      Src: /src/casync/src/caremote.c:2758,1
    - Dst: safe_atou64
      Src: /src/casync/src/caremote.c:2765,1
    - Dst: unlinkat
      Src: /src/casync/src/caremote.c:2769,1
    - Dst: unlinkat
      Src: /src/casync/src/caremote.c:2773,1
    - Dst: ca_chunk_file_remove
      Src: /src/casync/src/caremote.c:2779,1
    - Dst: free
      Src: /src/casync/src/caremote.c:2786,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 47
    argCount: 2
    argNames:
    - rr
    - id
    argTypes:
    - CaRemote*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2725
    functionDepth: 3
    functionLinenumber: 2725
    functionLinenumberEnd: 2788
    functionName: ca_remote_forget_chunk
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached:
    - unlinkat
    - strjoina
    - startswith
    - ca_chunk_file_remove
    - safe_atou64
    - ca_chunk_id_format
    - readlinkat_malloc
    - free
    linkageType: ''
    returnType: int
    signature: int ca_remote_forget_chunk(CaRemote *rr, const CaChunkID *id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_set_type
      Src: /src/casync/src/caremote.c:2802,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - rr
    - type
    argTypes:
    - CaRemote*
    - CaDigestType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2811
      start: 2790
    functionDepth: 3
    functionLinenumber: 2790
    functionLinenumberEnd: 2811
    functionName: ca_remote_set_digest_type
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached:
    - ca_digest_set_type
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_digest_type(CaRemote *rr, CaDigestType type)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rr
    - ret
    argTypes:
    - CaRemote*
    - CaDigestType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2821
      start: 2813
    functionDepth: 0
    functionLinenumber: 2813
    functionLinenumberEnd: 2821
    functionName: ca_remote_get_digest_type
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_get_digest_type(CaRemote *rr, CaDigestType *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rr
    - ret
    argTypes:
    - CaRemote*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2831
      start: 2823
    functionDepth: 0
    functionLinenumber: 2823
    functionLinenumberEnd: 2831
    functionName: ca_remote_get_requests
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_get_requests(CaRemote *rr, uint64_t *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rr
    - ret
    argTypes:
    - CaRemote*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2841
      start: 2833
    functionDepth: 0
    functionLinenumber: 2833
    functionLinenumberEnd: 2841
    functionName: ca_remote_get_request_bytes
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_get_request_bytes(CaRemote *rr, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - rr
    - ct
    argTypes:
    - CaRemote*
    - CaCompressionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2853
      start: 2843
    functionDepth: 0
    functionLinenumber: 2843
    functionLinenumberEnd: 2853
    functionName: ca_remote_set_compression_type
    functionSourceFile: /src/casync/src/caremote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_remote_set_compression_type(CaRemote *rr, CaCompressionType
      ct)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cautil.c:12,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/casync/src/cautil.c
    constantsTouched: []
    func_position:
      end: 31
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 31
    functionName: ca_is_definitely_path
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool ca_is_definitely_path(const char *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cautil.c:37,1
    - Dst: ca_is_definitely_path
      Src: /src/casync/src/cautil.c:46,1
    - Dst: strchr
      Src: /src/casync/src/cautil.c:49,1
    - Dst: strspn
      Src: /src/casync/src/cautil.c:52,1
    - Dst: startswith
      Src: /src/casync/src/cautil.c:54,1
    - Dst: strspn
      Src: /src/casync/src/cautil.c:58,1
    - Dst: IN_SET
      Src: /src/casync/src/cautil.c:62,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/casync/src/cautil.c
    constantsTouched: []
    func_position:
      end: 66
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 66
    functionName: ca_is_url
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 0
    functionsReached:
    - IN_SET
    - startswith
    - strspn
    - ca_is_definitely_path
    - strchr
    - assert
    linkageType: ''
    returnType: bool
    signature: bool ca_is_url(const char *s)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cautil.c:71,1
    - Dst: ca_is_definitely_path
      Src: /src/casync/src/cautil.c:73,1
    - Dst: strspn
      Src: /src/casync/src/cautil.c:76,1
    - Dst: strspn
      Src: /src/casync/src/cautil.c:83,1
    - Dst: isempty
      Src: /src/casync/src/cautil.c:90,1
    - Dst: isempty
      Src: /src/casync/src/cautil.c:95,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 70
        line_start: 70
        source_file: /src/casync/src/cautil.c
    constantsTouched: []
    func_position:
      end: 103
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 103
    functionName: ca_is_ssh_path
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 0
    functionsReached:
    - assert
    - isempty
    - ca_is_definitely_path
    - strspn
    linkageType: ''
    returnType: bool
    signature: bool ca_is_ssh_path(const char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isempty
      Src: /src/casync/src/cautil.c:106,1
    - Dst: ca_is_url
      Src: /src/casync/src/cautil.c:109,1
    - Dst: ca_is_ssh_path
      Src: /src/casync/src/cautil.c:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 116
    functionName: ca_classify_locator
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 5
    functionsReached:
    - ca_is_ssh_path
    - isempty
    - ca_is_url
    linkageType: ''
    returnType: CaLocatorClass
    signature: CaLocatorClass ca_classify_locator(const char *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cautil.c:122,1
    - Dst: startswith
      Src: /src/casync/src/cautil.c:126,1
    - Dst: strdup
      Src: /src/casync/src/cautil.c:128,1
    - Dst: startswith
      Src: /src/casync/src/cautil.c:133,1
    - Dst: strdup
      Src: /src/casync/src/cautil.c:139,1
    - Dst: strlen
      Src: /src/casync/src/cautil.c:142,1
    - Dst: unhexchar
      Src: /src/casync/src/cautil.c:150,1
    - Dst: unhexchar
      Src: /src/casync/src/cautil.c:151,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts:
    - condition: (p)
      pos:
        line_end: 121
        line_start: 121
        source_file: /src/casync/src/cautil.c
    constantsTouched: []
    func_position:
      end: 164
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 164
    functionName: ca_strip_file_url
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 1
    functionsReached:
    - startswith
    - unhexchar
    - strlen
    - strdup
    - assert
    linkageType: ''
    returnType: char
    signature: char *ca_strip_file_url(const char *p)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: isempty
      Src: /src/casync/src/cautil.c:169,1
    - Dst: isempty
      Src: /src/casync/src/cautil.c:172,1
    - Dst: ca_is_url
      Src: /src/casync/src/cautil.c:175,1
    - Dst: strlen
      Src: /src/casync/src/cautil.c:178,1
    - Dst: strrchr
      Src: /src/casync/src/cautil.c:180,1
    - Dst: strrchr
      Src: /src/casync/src/cautil.c:182,1
    - Dst: strchr
      Src: /src/casync/src/cautil.c:184,1
    - Dst: memcmp
      Src: /src/casync/src/cautil.c:189,1
    - Dst: strrchr
      Src: /src/casync/src/cautil.c:192,1
    - Dst: endswith
      Src: /src/casync/src/cautil.c:198,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - p
    - suffix
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 201
    functionName: ca_locator_has_suffix
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 1
    functionsReached:
    - endswith
    - strrchr
    - strlen
    - isempty
    - ca_is_url
    - memcmp
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool ca_locator_has_suffix(const char *p, const char *suffix)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isempty
      Src: /src/casync/src/cautil.c:208,1
    - Dst: strchr
      Src: /src/casync/src/cautil.c:212,1
    - Dst: strlen
      Src: /src/casync/src/cautil.c:223,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 227
    functionName: ca_xattr_name_is_valid
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 1
    functionsReached:
    - isempty
    - strlen
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool ca_xattr_name_is_valid(const char *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_xattr_name_is_valid
      Src: /src/casync/src/cautil.c:235,1
    - Dst: startswith
      Src: /src/casync/src/cautil.c:238,1
    - Dst: startswith
      Src: /src/casync/src/cautil.c:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 240
    functionName: ca_xattr_name_store
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 2
    functionsReached:
    - startswith
    - ca_xattr_name_is_valid
    linkageType: ''
    returnType: bool
    signature: bool ca_xattr_name_store(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/casync/src/cautil.c:252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 258
    functionName: ca_compressed_chunk_suffix
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 5
    functionsReached:
    - getenv
    linkageType: ''
    returnType: char
    signature: char *ca_compressed_chunk_suffix(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/casync/src/cautil.c:282,1
    - Dst: assert
      Src: /src/casync/src/cautil.c:283,1
    - Dst: strcspn
      Src: /src/casync/src/cautil.c:285,1
    - Dst: strcspn
      Src: /src/casync/src/cautil.c:288,1
    - Dst: strndupa
      Src: /src/casync/src/cautil.c:301,1
    - Dst: endswith
      Src: /src/casync/src/cautil.c:303,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:304,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:306,1
    - Dst: strchr
      Src: /src/casync/src/cautil.c:315,1
    - Dst: assert
      Src: /src/casync/src/cautil.c:316,1
    - Dst: strndupa
      Src: /src/casync/src/cautil.c:319,1
    - Dst: strchr
      Src: /src/casync/src/cautil.c:321,1
    - Dst: dirname_malloc
      Src: /src/casync/src/cautil.c:324,1
    - Dst: endswith
      Src: /src/casync/src/cautil.c:328,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:329,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:331,1
    - Dst: free
      Src: /src/casync/src/cautil.c:332,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:334,1
    - Dst: if
      Src: /src/casync/src/cautil.c:340,1
    - Dst: strchr
      Src: /src/casync/src/cautil.c:340,1
    - Dst: dirname_malloc
      Src: /src/casync/src/cautil.c:343,1
    - Dst: endswith
      Src: /src/casync/src/cautil.c:347,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:348,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:350,1
    - Dst: free
      Src: /src/casync/src/cautil.c:351,1
    - Dst: strdup
      Src: /src/casync/src/cautil.c:353,1
    - Dst: assert_not_reached
      Src: /src/casync/src/cautil.c:358,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 52
    argCount: 3
    argNames:
    - locator
    - last_component
    - ret
    argTypes:
    - char*
    - char*
    - char**
    assertStmts:
    - condition: (p)
      pos:
        line_end: 282
        line_start: 282
        source_file: /src/casync/src/cautil.c
    - condition: (p)
      pos:
        line_end: 315
        line_start: 315
        source_file: /src/casync/src/cautil.c
    constantsTouched: []
    func_position:
      end: 366
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 366
    functionName: ca_locator_patch_last_component
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 1
    functionsReached:
    - endswith
    - strcspn
    - strstr
    - if
    - dirname_malloc
    - strjoin
    - strdup
    - strndupa
    - strchr
    - assert_not_reached
    - assert
    - free
    linkageType: ''
    returnType: int
    signature: int ca_locator_patch_last_component(const char *locator, const char
      *last_component, char **ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/casync/src/cautil.c:282,1
    - Dst: assert
      Src: /src/casync/src/cautil.c:283,1
    - Dst: strcspn
      Src: /src/casync/src/cautil.c:285,1
    - Dst: strcspn
      Src: /src/casync/src/cautil.c:288,1
    - Dst: strndupa
      Src: /src/casync/src/cautil.c:301,1
    - Dst: endswith
      Src: /src/casync/src/cautil.c:303,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:304,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:306,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (p)
      pos:
        line_end: 282
        line_start: 282
        source_file: /src/casync/src/cautil.c
    constantsTouched: []
    func_position:
      end: 309
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 309
    functionName: CA_LOCATOR_URL
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 0
    functionsReached:
    - endswith
    - strcspn
    - strstr
    - strjoin
    - strndupa
    - assert
    linkageType: ''
    returnType: case
    signature: case CA_LOCATOR_URL
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/casync/src/cautil.c:315,1
    - Dst: assert
      Src: /src/casync/src/cautil.c:316,1
    - Dst: strndupa
      Src: /src/casync/src/cautil.c:319,1
    - Dst: strchr
      Src: /src/casync/src/cautil.c:321,1
    - Dst: dirname_malloc
      Src: /src/casync/src/cautil.c:324,1
    - Dst: endswith
      Src: /src/casync/src/cautil.c:328,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:329,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:331,1
    - Dst: free
      Src: /src/casync/src/cautil.c:332,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:334,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (p)
      pos:
        line_end: 315
        line_start: 315
        source_file: /src/casync/src/cautil.c
    constantsTouched: []
    func_position:
      end: 336
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 336
    functionName: CA_LOCATOR_SSH
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 0
    functionsReached:
    - endswith
    - dirname_malloc
    - strjoin
    - strndupa
    - strchr
    - assert
    - free
    linkageType: ''
    returnType: case
    signature: case CA_LOCATOR_SSH
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if
      Src: /src/casync/src/cautil.c:340,1
    - Dst: strchr
      Src: /src/casync/src/cautil.c:340,1
    - Dst: dirname_malloc
      Src: /src/casync/src/cautil.c:343,1
    - Dst: endswith
      Src: /src/casync/src/cautil.c:347,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:348,1
    - Dst: strjoin
      Src: /src/casync/src/cautil.c:350,1
    - Dst: free
      Src: /src/casync/src/cautil.c:351,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 352
    functionName: CA_LOCATOR_PATH
    functionSourceFile: /src/casync/src/cautil.c
    functionUses: 0
    functionsReached:
    - endswith
    - if
    - dirname_malloc
    - strjoin
    - strchr
    - free
    linkageType: ''
    returnType: case
    signature: case CA_LOCATOR_PATH
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_match_unref
      Src: /src/casync/src/camatch.h:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - match
    argTypes:
    - CaMatch**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: ca_match_unrefp
    functionSourceFile: /src/casync/src/camatch.h
    functionUses: 0
    functionsReached:
    - ca_match_unref
    linkageType: ''
    returnType: void
    signature: void ca_match_unrefp(CaMatch **match)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - match
    argTypes:
    - CaMatch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: ca_match_children
    functionSourceFile: /src/casync/src/camatch.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t ca_match_children(CaMatch *match)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_remote_unref
      Src: /src/casync/src/caremote.h:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rr
    argTypes:
    - CaRemote**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: ca_remote_unrefp
    functionSourceFile: /src/casync/src/caremote.h
    functionUses: 0
    functionsReached:
    - ca_remote_unref
    linkageType: ''
    returnType: void
    signature: void ca_remote_unrefp(CaRemote **rr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:78,1
    - Dst: chattr
      Src: /src/casync/src/casync-tool.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 185
    functionName: help
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 1
    functionsReached:
    - chattr
    - printf
    linkageType: ''
    returnType: void
    signature: void help(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: version
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void version(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:197,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:198,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:199,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:201,1
    - Dst: strchr
      Src: /src/casync/src/casync-tool.c:209,1
    - Dst: strchr
      Src: /src/casync/src/casync-tool.c:213,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:215,1
    - Dst: strndupa
      Src: /src/casync/src/casync-tool.c:219,1
    - Dst: parse_size
      Src: /src/casync/src/casync-tool.c:220,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:222,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:224,1
    - Dst: strndupa
      Src: /src/casync/src/casync-tool.c:228,1
    - Dst: parse_size
      Src: /src/casync/src/casync-tool.c:229,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:231,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:233,1
    - Dst: parse_size
      Src: /src/casync/src/casync-tool.c:237,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:239,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:241,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:245,1
    - Dst: parse_size
      Src: /src/casync/src/casync-tool.c:250,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:252,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:254,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:258,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 63
    argCount: 4
    argNames:
    - v
    - ret_min
    - ret_avg
    - ret_max
    argTypes:
    - char*
    - size_t*
    - size_t*
    - size_t*
    assertStmts:
    - condition: (v)
      pos:
        line_end: 196
        line_start: 196
        source_file: /src/casync/src/casync-tool.c
    - condition: (ret_min)
      pos:
        line_end: 197
        line_start: 197
        source_file: /src/casync/src/casync-tool.c
    - condition: (ret_max)
      pos:
        line_end: 198
        line_start: 198
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 271
      start: 192
    functionDepth: 4
    functionLinenumber: 192
    functionLinenumberEnd: 271
    functionName: parse_chunk_sizes
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - log_error_errno
    - parse_size
    - strndupa
    - strchr
    - streq
    - assert
    - log_error
    linkageType: ''
    returnType: int
    signature: int parse_chunk_sizes(const char *v, size_t *ret_min, size_t *ret_avg,
      size_t *ret_max)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:274,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:276,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:278,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:280,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:282,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:284,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:285,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:292,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - arg
    - what
    argTypes:
    - char*
    - enum arg_what*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 297
    functionName: parse_what_selector
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - streq
    - log_error
    - printf
    linkageType: ''
    returnType: int
    signature: int parse_what_selector(const char *arg, enum arg_what *what)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: puts
      Src: /src/casync/src/casync-tool.c:303,1
    - Dst: UINT64_C
      Src: /src/casync/src/casync-tool.c:307,1
    - Dst: ca_with_feature_flags_format
      Src: /src/casync/src/casync-tool.c:312,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:314,1
    - Dst: puts
      Src: /src/casync/src/casync-tool.c:316,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 299
    functionDepth: 4
    functionLinenumber: 299
    functionLinenumberEnd: 320
    functionName: dump_with_flags
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - log_error_errno
    - ca_with_feature_flags_format
    - UINT64_C
    - puts
    linkageType: ''
    returnType: int
    signature: int dump_with_flags(void)
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:388,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:389,1
    - Dst: getenv_bool
      Src: /src/casync/src/casync-tool.c:391,1
    - Dst: getopt_long
      Src: /src/casync/src/casync-tool.c:394,1
    - Dst: help
      Src: /src/casync/src/casync-tool.c:399,1
    - Dst: version
      Src: /src/casync/src/casync-tool.c:403,1
    - Dst: set_log_level_from_string
      Src: /src/casync/src/casync-tool.c:407,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:409,1
    - Dst: free_and_strdup
      Src: /src/casync/src/casync-tool.c:424,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:426,1
    - Dst: strv_extend
      Src: /src/casync/src/casync-tool.c:432,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:434,1
    - Dst: parse_chunk_sizes
      Src: /src/casync/src/casync-tool.c:440,1
    - Dst: strv_extend
      Src: /src/casync/src/casync-tool.c:450,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:452,1
    - Dst: free_and_strdup
      Src: /src/casync/src/casync-tool.c:457,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:459,1
    - Dst: parse_size
      Src: /src/casync/src/casync-tool.c:468,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:470,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:472,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:479,1
    - Dst: dump_with_flags
      Src: /src/casync/src/casync-tool.c:480,1
    - Dst: ca_with_feature_flags_parse_one
      Src: /src/casync/src/casync-tool.c:482,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:484,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:493,1
    - Dst: dump_with_flags
      Src: /src/casync/src/casync-tool.c:494,1
    - Dst: ca_with_feature_flags_parse_one
      Src: /src/casync/src/casync-tool.c:496,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:498,1
    - Dst: parse_what_selector
      Src: /src/casync/src/casync-tool.c:505,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:511,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:513,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:519,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:521,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:527,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:529,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:535,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:537,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:543,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:545,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:551,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:553,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:559,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:561,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:567,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:569,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:575,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:577,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:583,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:585,1
    - Dst: parse_uid
      Src: /src/casync/src/casync-tool.c:593,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:595,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:597,1
    - Dst: safe_atou64
      Src: /src/casync/src/casync-tool.c:613,1
    - Dst: UINT64_C
      Src: /src/casync/src/casync-tool.c:614,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:615,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:617,1
    - Dst: UINT64_C
      Src: /src/casync/src/casync-tool.c:623,1
    - Dst: parse_boolean
      Src: /src/casync/src/casync-tool.c:635,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:637,1
    - Dst: ca_digest_type_from_string
      Src: /src/casync/src/casync-tool.c:645,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:647,1
    - Dst: ca_compression_type_from_string
      Src: /src/casync/src/casync-tool.c:656,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:658,1
    - Dst: compressor_is_supported
      Src: /src/casync/src/casync-tool.c:660,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:661,1
    - Dst: ca_compression_type_to_string
      Src: /src/casync/src/casync-tool.c:663,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:673,1
    - Dst: DECIMAL_STR_MAX
      Src: /src/casync/src/casync-tool.c:679,1
    - Dst: snprintf
      Src: /src/casync/src/casync-tool.c:680,1
    - Dst: setenv
      Src: /src/casync/src/casync-tool.c:681,1
    - Dst: putenv
      Src: /src/casync/src/casync-tool.c:685,1
    - Dst: unsetenv
      Src: /src/casync/src/casync-tool.c:687,1
    CyclomaticComplexity: 67
    EdgeCount: 67
    ICount: 207
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (false)
      pos:
        line_end: 672
        line_start: 672
        source_file: /src/casync/src/casync-tool.c
    - condition: (argv)
      pos:
        line_end: 388
        line_start: 388
        source_file: /src/casync/src/casync-tool.c
    - condition: (argc >= 0)
      pos:
        line_end: 387
        line_start: 387
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 690
      start: 322
    functionDepth: 5
    functionLinenumber: 322
    functionLinenumberEnd: 690
    functionName: parse_argv
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 1
    functionsReached:
    - ca_digest_type_from_string
    - log_error_errno
    - parse_size
    - dump_with_flags
    - free_and_strdup
    - snprintf
    - parse_what_selector
    - log_oom
    - safe_atou64
    - ca_with_feature_flags_parse_one
    - setenv
    - putenv
    - help
    - assert
    - compressor_is_supported
    - DECIMAL_STR_MAX
    - getopt_long
    - getenv_bool
    - parse_boolean
    - unsetenv
    - streq
    - ca_compression_type_to_string
    - set_log_level_from_string
    - parse_uid
    - strv_extend
    - UINT64_C
    - version
    - parse_chunk_sizes
    - ca_compression_type_from_string
    linkageType: ''
    returnType: int
    signature: int parse_argv(int argc, char *argv[])
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/casync/src/casync-tool.c:699,1
    - Dst: strdup
      Src: /src/casync/src/casync-tool.c:702,1
    - Dst: ca_locator_patch_last_component
      Src: /src/casync/src/casync-tool.c:707,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:709,1
    - Dst: strdup
      Src: /src/casync/src/casync-tool.c:712,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:715,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - index_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 692
    functionDepth: 4
    functionLinenumber: 692
    functionLinenumberEnd: 718
    functionName: set_default_store
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - getenv
    - log_error_errno
    - log_oom
    - strdup
    - ca_locator_patch_last_component
    linkageType: ''
    returnType: int
    signature: int set_default_store(const char *index_path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:724,1
    - Dst: ca_sync_add_store_auto
      Src: /src/casync/src/casync-tool.c:727,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:729,1
    - Dst: ca_sync_add_seed_path
      Src: /src/casync/src/casync-tool.c:733,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:735,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 723
        line_start: 723
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 739
      start: 720
    functionDepth: 3
    functionLinenumber: 720
    functionLinenumberEnd: 739
    functionName: load_seeds_and_extra_stores
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_sync_add_seed_path
    - ca_sync_add_store_auto
    - log_error
    linkageType: ''
    returnType: int
    signature: int load_seeds_and_extra_stores(CaSync *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_add_store_auto
      Src: /src/casync/src/casync-tool.c:727,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:729,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 726
    functionDepth: 3
    functionLinenumber: 726
    functionLinenumberEnd: 730
    functionName: STRV_FOREACH
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 2
    functionsReached:
    - ca_sync_add_store_auto
    - log_error
    linkageType: ''
    returnType: void
    signature: void STRV_FOREACH(i, arg_extra_stores)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_add_seed_path
      Src: /src/casync/src/casync-tool.c:733,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:735,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 732
    functionDepth: 3
    functionLinenumber: 732
    functionLinenumberEnd: 736
    functionName: STRV_FOREACH
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 2
    functionsReached:
    - ca_sync_add_seed_path
    - log_error
    linkageType: ''
    returnType: void
    signature: void STRV_FOREACH(i, arg_seeds)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - default_with_flags
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 741
    functionDepth: 0
    functionLinenumber: 741
    functionLinenumberEnd: 743
    functionName: combined_with_flags
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t combined_with_flags(uint64_t default_with_flags)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:749,1
    - Dst: combined_with_flags
      Src: /src/casync/src/casync-tool.c:751,1
    - Dst: ca_feature_flags_from_digest_type
      Src: /src/casync/src/casync-tool.c:760,1
    - Dst: ca_sync_set_feature_flags
      Src: /src/casync/src/casync-tool.c:762,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:764,1
    - Dst: ca_sync_set_feature_flags_mask
      Src: /src/casync/src/casync-tool.c:766,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:768,1
    - Dst: ca_sync_set_uid_shift
      Src: /src/casync/src/casync-tool.c:771,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:773,1
    - Dst: ca_sync_set_uid_range
      Src: /src/casync/src/casync-tool.c:775,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:777,1
    - Dst: ca_sync_set_undo_immutable
      Src: /src/casync/src/casync-tool.c:780,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:782,1
    - Dst: ca_sync_set_compression_type
      Src: /src/casync/src/casync-tool.c:784,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:786,1
    - Dst: ca_sync_set_delete
      Src: /src/casync/src/casync-tool.c:788,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:790,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 34
    argCount: 2
    argNames:
    - s
    - default_with_flags
    argTypes:
    - CaSync*
    - uint64_t
    assertStmts:
    - condition: (s)
      pos:
        line_end: 748
        line_start: 748
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 793
      start: 745
    functionDepth: 4
    functionLinenumber: 745
    functionLinenumberEnd: 793
    functionName: load_feature_flags
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - ca_sync_set_feature_flags
    - ca_sync_set_uid_shift
    - combined_with_flags
    - ca_sync_set_compression_type
    - ca_sync_set_delete
    - log_error_errno
    - ca_sync_set_uid_range
    - ca_sync_set_undo_immutable
    - assert
    - ca_feature_flags_from_digest_type
    - ca_sync_set_feature_flags_mask
    linkageType: ''
    returnType: int
    signature: int load_feature_flags(CaSync *s, uint64_t default_with_flags)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_set_chunk_size_avg
      Src: /src/casync/src/casync-tool.c:800,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:802,1
    - Dst: ca_sync_set_chunk_size_min
      Src: /src/casync/src/casync-tool.c:806,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:808,1
    - Dst: ca_sync_set_chunk_size_max
      Src: /src/casync/src/casync-tool.c:812,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:814,1
    - Dst: ca_sync_get_chunk_size_avg
      Src: /src/casync/src/casync-tool.c:820,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:822,1
    - Dst: ca_sync_get_chunk_size_min
      Src: /src/casync/src/casync-tool.c:824,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:826,1
    - Dst: ca_sync_get_chunk_size_max
      Src: /src/casync/src/casync-tool.c:828,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:830,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:832,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 795
    functionDepth: 4
    functionLinenumber: 795
    functionLinenumberEnd: 834
    functionName: load_chunk_size
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - ca_sync_set_chunk_size_max
    - log_info
    - log_error_errno
    - ca_sync_get_chunk_size_avg
    - ca_sync_get_chunk_size_max
    - ca_sync_set_chunk_size_min
    - ca_sync_get_chunk_size_min
    - ca_sync_set_chunk_size_avg
    linkageType: ''
    returnType: int
    signature: int load_chunk_size(CaSync *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:842,1
    - Dst: ca_sync_get_feature_flags
      Src: /src/casync/src/casync-tool.c:849,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:853,1
    - Dst: ca_with_feature_flags_format
      Src: /src/casync/src/casync-tool.c:855,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:857,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:859,1
    - Dst: strnone
      Src: /src/casync/src/casync-tool.c:859,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:860,1
    - Dst: yes_no
      Src: /src/casync/src/casync-tool.c:860,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:861,1
    - Dst: yes_no
      Src: /src/casync/src/casync-tool.c:861,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:862,1
    - Dst: yes_no
      Src: /src/casync/src/casync-tool.c:862,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:863,1
    - Dst: ca_digest_type_to_string
      Src: /src/casync/src/casync-tool.c:863,1
    - Dst: ca_feature_flags_to_digest_type
      Src: /src/casync/src/casync-tool.c:863,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 841
        line_start: 841
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 868
      start: 836
    functionDepth: 4
    functionLinenumber: 836
    functionLinenumberEnd: 868
    functionName: verbose_print_feature_flags
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - strnone
    - ca_sync_get_feature_flags
    - log_error_errno
    - ca_with_feature_flags_format
    - ca_digest_type_to_string
    - ca_feature_flags_to_digest_type
    - log_info
    - assert
    - yes_no
    linkageType: ''
    returnType: int
    signature: int verbose_print_feature_flags(CaSync *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_path
      Src: /src/casync/src/casync-tool.c:877,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:881,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:883,1
    - Dst: isempty
      Src: /src/casync/src/casync-tool.c:883,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - s
    - verb
    argTypes:
    - CaSync*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 870
    functionDepth: 4
    functionLinenumber: 870
    functionLinenumberEnd: 885
    functionName: verbose_print_path
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - log_info
    - isempty
    - ca_sync_current_path
    - log_error_errno
    linkageType: ''
    returnType: int
    signature: int verbose_print_path(CaSync *s, const char *verb)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:893,1
    - Dst: ca_sync_get_covering_feature_flags
      Src: /src/casync/src/casync-tool.c:898,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:904,1
    - Dst: ca_sync_get_feature_flags
      Src: /src/casync/src/casync-tool.c:906,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:908,1
    - Dst: ca_with_feature_flags_format
      Src: /src/casync/src/casync-tool.c:910,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:912,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:914,1
    - Dst: strnone
      Src: /src/casync/src/casync-tool.c:914,1
    - Dst: mfree
      Src: /src/casync/src/casync-tool.c:918,1
    - Dst: ca_with_feature_flags_format
      Src: /src/casync/src/casync-tool.c:920,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:922,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:924,1
    - Dst: strnone
      Src: /src/casync/src/casync-tool.c:924,1
    - Dst: ca_sync_current_archive_chunks
      Src: /src/casync/src/casync-tool.c:928,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:930,1
    - Dst: ca_sync_current_archive_reused_chunks
      Src: /src/casync/src/casync-tool.c:932,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:934,1
    - Dst: ca_sync_current_archive_offset
      Src: /src/casync/src/casync-tool.c:936,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:938,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:941,1
    - Dst: format_bytes
      Src: /src/casync/src/casync-tool.c:941,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:943,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:946,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:949,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:953,1
    - Dst: format_bytes
      Src: /src/casync/src/casync-tool.c:953,1
    - Dst: ca_sync_current_cache_hits
      Src: /src/casync/src/casync-tool.c:955,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:957,1
    - Dst: ca_sync_current_cache_misses
      Src: /src/casync/src/casync-tool.c:959,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:961,1
    - Dst: ca_sync_current_cache_invalidated
      Src: /src/casync/src/casync-tool.c:963,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:965,1
    - Dst: ca_sync_current_cache_added
      Src: /src/casync/src/casync-tool.c:967,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:969,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:972,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 59
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts:
    - condition: (s)
      pos:
        line_end: 892
        line_start: 892
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 975
      start: 887
    functionDepth: 4
    functionLinenumber: 887
    functionLinenumberEnd: 975
    functionName: verbose_print_done_make
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - strnone
    - ca_sync_current_cache_hits
    - mfree
    - ca_sync_current_archive_offset
    - ca_sync_get_feature_flags
    - log_error_errno
    - ca_with_feature_flags_format
    - ca_sync_get_covering_feature_flags
    - format_bytes
    - ca_sync_current_cache_added
    - ca_sync_current_cache_misses
    - ca_sync_current_archive_reused_chunks
    - ca_sync_current_archive_chunks
    - log_info
    - assert
    - ca_sync_current_cache_invalidated
    linkageType: ''
    returnType: int
    signature: int verbose_print_done_make(CaSync *s)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_get_punch_holes_bytes
      Src: /src/casync/src/casync-tool.c:989,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:990,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:992,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:994,1
    - Dst: format_bytes
      Src: /src/casync/src/casync-tool.c:994,1
    - Dst: ca_sync_get_reflink_bytes
      Src: /src/casync/src/casync-tool.c:997,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:998,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1000,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1002,1
    - Dst: format_bytes
      Src: /src/casync/src/casync-tool.c:1002,1
    - Dst: ca_sync_get_hardlink_bytes
      Src: /src/casync/src/casync-tool.c:1005,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1006,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1008,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1010,1
    - Dst: format_bytes
      Src: /src/casync/src/casync-tool.c:1010,1
    - Dst: ca_sync_get_local_requests
      Src: /src/casync/src/casync-tool.c:1013,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1014,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1016,1
    - Dst: ca_sync_get_local_request_bytes
      Src: /src/casync/src/casync-tool.c:1022,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1023,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1025,1
    - Dst: ca_sync_get_seed_requests
      Src: /src/casync/src/casync-tool.c:1031,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1032,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1034,1
    - Dst: ca_sync_get_seed_request_bytes
      Src: /src/casync/src/casync-tool.c:1040,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1041,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1043,1
    - Dst: ca_sync_get_remote_requests
      Src: /src/casync/src/casync-tool.c:1049,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1050,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1052,1
    - Dst: ca_sync_get_remote_request_bytes
      Src: /src/casync/src/casync-tool.c:1058,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1059,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1061,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1068,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1072,1
    - Dst: format_bytes
      Src: /src/casync/src/casync-tool.c:1073,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1076,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1080,1
    - Dst: format_bytes
      Src: /src/casync/src/casync-tool.c:1081,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1084,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1088,1
    - Dst: format_bytes
      Src: /src/casync/src/casync-tool.c:1089,1
    - Dst: ca_sync_get_runtime_nsec
      Src: /src/casync/src/casync-tool.c:1092,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1093,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1095,1
    - Dst: ca_sync_get_seed_seeding_time_nsec
      Src: /src/casync/src/casync-tool.c:1098,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1099,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1101,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1103,1
    - Dst: format_timespan
      Src: /src/casync/src/casync-tool.c:1104,1
    - Dst: ca_sync_get_decoding_time_nsec
      Src: /src/casync/src/casync-tool.c:1108,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1109,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1111,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1113,1
    - Dst: format_timespan
      Src: /src/casync/src/casync-tool.c:1114,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1118,1
    - Dst: format_timespan
      Src: /src/casync/src/casync-tool.c:1118,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 94
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 977
    functionDepth: 4
    functionLinenumber: 977
    functionLinenumberEnd: 1121
    functionName: verbose_print_done_extract
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - ca_sync_get_hardlink_bytes
    - ca_sync_get_seed_seeding_time_nsec
    - ca_sync_get_decoding_time_nsec
    - IN_SET
    - ca_sync_get_local_requests
    - format_bytes
    - log_error_errno
    - ca_sync_get_seed_requests
    - ca_sync_get_punch_holes_bytes
    - ca_sync_get_remote_requests
    - ca_sync_get_reflink_bytes
    - ca_sync_get_remote_request_bytes
    - ca_sync_get_runtime_nsec
    - ca_sync_get_seed_request_bytes
    - log_info
    - ca_sync_get_local_request_bytes
    - format_timespan
    linkageType: ''
    returnType: int
    signature: int verbose_print_done_extract(CaSync *s)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:1126,1
    - Dst: verbose_print_path
      Src: /src/casync/src/casync-tool.c:1137,1
    - Dst: verbose_print_path
      Src: /src/casync/src/casync-tool.c:1140,1
    - Dst: verbose_print_path
      Src: /src/casync/src/casync-tool.c:1143,1
    - Dst: verbose_print_path
      Src: /src/casync/src/casync-tool.c:1146,1
    - Dst: sync_poll_sigset
      Src: /src/casync/src/casync-tool.c:1149,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1152,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1154,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1159,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:1162,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 3
    argNames:
    - s
    - step
    - quit_ok
    argTypes:
    - CaSync*
    - int
    - bool
    assertStmts:
    - condition: (s)
      pos:
        line_end: 1125
        line_start: 1125
        source_file: /src/casync/src/casync-tool.c
    - condition: (false)
      pos:
        line_end: 1161
        line_start: 1161
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 1163
      start: 1123
    functionDepth: 5
    functionLinenumber: 1123
    functionLinenumberEnd: 1163
    functionName: process_step_generic
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - log_error_errno
    - verbose_print_path
    - assert
    - sync_poll_sigset
    - log_error
    linkageType: ''
    returnType: int
    signature: int process_step_generic(CaSync *s, int step, bool quit_ok)
  - BBCount: 74
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:1176,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:1178,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1182,1
    - Dst: ca_strip_file_url
      Src: /src/casync/src/casync-tool.c:1187,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1189,1
    - Dst: ca_strip_file_url
      Src: /src/casync/src/casync-tool.c:1193,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1195,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1205,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:1209,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:1210,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:1212,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:1214,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1217,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1222,1
    - Dst: strdup
      Src: /src/casync/src/casync-tool.c:1223,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1225,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:1228,1
    - Dst: ca_classify_locator
      Src: /src/casync/src/casync-tool.c:1234,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1236,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1241,1
    - Dst: open
      Src: /src/casync/src/casync-tool.c:1245,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1247,1
    - Dst: fstat
      Src: /src/casync/src/casync-tool.c:1250,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1251,1
    - Dst: S_ISDIR
      Src: /src/casync/src/casync-tool.c:1253,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1257,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1258,1
    - Dst: S_ISREG
      Src: /src/casync/src/casync-tool.c:1262,1
    - Dst: S_ISBLK
      Src: /src/casync/src/casync-tool.c:1262,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1267,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1271,1
    - Dst: streq_ptr
      Src: /src/casync/src/casync-tool.c:1275,1
    - Dst: mfree
      Src: /src/casync/src/casync-tool.c:1276,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1279,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1283,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1284,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1288,1
    - Dst: set_default_store
      Src: /src/casync/src/casync-tool.c:1289,1
    - Dst: ca_sync_new_encode
      Src: /src/casync/src/casync-tool.c:1294,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1296,1
    - Dst: load_chunk_size
      Src: /src/casync/src/casync-tool.c:1298,1
    - Dst: ca_sync_set_log_level
      Src: /src/casync/src/casync-tool.c:1303,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1305,1
    - Dst: ca_sync_set_rate_limit_bps
      Src: /src/casync/src/casync-tool.c:1309,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1311,1
    - Dst: ca_sync_set_base_fd
      Src: /src/casync/src/casync-tool.c:1314,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1316,1
    - Dst: ca_sync_set_make_mode
      Src: /src/casync/src/casync-tool.c:1320,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1322,1
    - Dst: ca_sync_set_archive_auto
      Src: /src/casync/src/casync-tool.c:1327,1
    - Dst: ca_sync_set_archive_fd
      Src: /src/casync/src/casync-tool.c:1329,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1331,1
    - Dst: ca_sync_set_index_auto
      Src: /src/casync/src/casync-tool.c:1334,1
    - Dst: ca_sync_set_index_fd
      Src: /src/casync/src/casync-tool.c:1336,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1338,1
    - Dst: ca_sync_set_store_auto
      Src: /src/casync/src/casync-tool.c:1342,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1344,1
    - Dst: load_feature_flags
      Src: /src/casync/src/casync-tool.c:1347,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1353,1
    - Dst: strjoin
      Src: /src/casync/src/casync-tool.c:1357,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1359,1
    - Dst: ca_sync_enable_archive_digest
      Src: /src/casync/src/casync-tool.c:1362,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1364,1
    - Dst: ca_sync_set_cache_path
      Src: /src/casync/src/casync-tool.c:1367,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1369,1
    - Dst: send_notify
      Src: /src/casync/src/casync-tool.c:1372,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:1376,1
    - Dst: ca_sync_step
      Src: /src/casync/src/casync-tool.c:1380,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1382,1
    - Dst: verbose_print_done_make
      Src: /src/casync/src/casync-tool.c:1390,1
    - Dst: ca_sync_get_archive_digest
      Src: /src/casync/src/casync-tool.c:1392,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1394,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/casync-tool.c:1394,1
    - Dst: log_debug_errno
      Src: /src/casync/src/casync-tool.c:1396,1
    - Dst: verbose_print_path
      Src: /src/casync/src/casync-tool.c:1402,1
    - Dst: verbose_print_path
      Src: /src/casync/src/casync-tool.c:1408,1
    - Dst: process_step_generic
      Src: /src/casync/src/casync-tool.c:1416,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:1427,1
    - Dst: verbose_print_feature_flags
      Src: /src/casync/src/casync-tool.c:1430,1
    - Dst: progress
      Src: /src/casync/src/casync-tool.c:1433,1
    CyclomaticComplexity: 75
    EdgeCount: 75
    ICount: 207
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (false)
      pos:
        line_end: 1426
        line_start: 1426
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 1437
      start: 1165
    functionDepth: 10
    functionLinenumber: 1165
    functionLinenumberEnd: 1437
    functionName: verb_make
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - ca_sync_set_rate_limit_bps
    - IN_SET
    - process_step_generic
    - log_error_errno
    - ca_sync_enable_archive_digest
    - streq_ptr
    - ca_chunk_id_format
    - set_default_store
    - ca_sync_set_archive_fd
    - log_debug_errno
    - ca_sync_set_make_mode
    - open
    - ca_sync_new_encode
    - _cleanup_
    - ca_sync_set_index_auto
    - S_ISDIR
    - log_oom
    - verbose_print_done_make
    - ca_sync_set_archive_auto
    - progress
    - printf
    - S_ISBLK
    - strdup
    - log_info
    - assert
    - ca_strip_file_url
    - ca_locator_has_suffix
    - mfree
    - ca_sync_set_index_fd
    - load_chunk_size
    - ca_sync_set_store_auto
    - ca_sync_step
    - S_ISREG
    - strjoin
    - verbose_print_feature_flags
    - ca_sync_set_log_level
    - ca_sync_set_cache_path
    - streq
    - ca_classify_locator
    - ca_sync_get_archive_digest
    - send_notify
    - fstat
    - verbose_print_path
    - ca_sync_set_base_fd
    - load_feature_flags
    - log_error
    linkageType: ''
    returnType: int
    signature: int verb_make(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/casync/src/casync-tool.c:1447,1
    - Dst: isempty
      Src: /src/casync/src/casync-tool.c:1449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1439
    functionDepth: 1
    functionLinenumber: 1439
    functionLinenumberEnd: 1453
    functionName: normalize_seek_path
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - isempty
    - strspn
    linkageType: ''
    returnType: char
    signature: char *normalize_seek_path(const char *p)
  - BBCount: 79
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:1466,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:1469,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1472,1
    - Dst: ca_strip_file_url
      Src: /src/casync/src/casync-tool.c:1477,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1479,1
    - Dst: ca_strip_file_url
      Src: /src/casync/src/casync-tool.c:1483,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1485,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1498,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:1502,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:1504,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:1506,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:1508,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1511,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:1516,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1519,1
    - Dst: strdup
      Src: /src/casync/src/casync-tool.c:1520,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1522,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:1525,1
    - Dst: ca_classify_locator
      Src: /src/casync/src/casync-tool.c:1531,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1533,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1538,1
    - Dst: open
      Src: /src/casync/src/casync-tool.c:1542,1
    - Dst: open
      Src: /src/casync/src/casync-tool.c:1544,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1547,1
    - Dst: fstat
      Src: /src/casync/src/casync-tool.c:1553,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1554,1
    - Dst: S_ISDIR
      Src: /src/casync/src/casync-tool.c:1556,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1560,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1561,1
    - Dst: S_ISREG
      Src: /src/casync/src/casync-tool.c:1565,1
    - Dst: S_ISBLK
      Src: /src/casync/src/casync-tool.c:1565,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1570,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1574,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1580,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1584,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1585,1
    - Dst: normalize_seek_path
      Src: /src/casync/src/casync-tool.c:1589,1
    - Dst: ca_sync_new_decode
      Src: /src/casync/src/casync-tool.c:1591,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1593,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1595,1
    - Dst: set_default_store
      Src: /src/casync/src/casync-tool.c:1596,1
    - Dst: ca_sync_add_seed_path
      Src: /src/casync/src/casync-tool.c:1601,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1603,1
    - Dst: ca_sync_set_log_level
      Src: /src/casync/src/casync-tool.c:1608,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1610,1
    - Dst: ca_sync_set_rate_limit_bps
      Src: /src/casync/src/casync-tool.c:1614,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1616,1
    - Dst: ca_sync_set_boundary_fd
      Src: /src/casync/src/casync-tool.c:1621,1
    - Dst: ca_sync_set_boundary_path
      Src: /src/casync/src/casync-tool.c:1623,1
    - Dst: ca_sync_set_base_fd
      Src: /src/casync/src/casync-tool.c:1626,1
    - Dst: ca_sync_set_base_mode
      Src: /src/casync/src/casync-tool.c:1628,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1628,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1630,1
    - Dst: ca_sync_set_base_path
      Src: /src/casync/src/casync-tool.c:1632,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1636,1
    - Dst: ca_sync_set_archive_fd
      Src: /src/casync/src/casync-tool.c:1642,1
    - Dst: ca_sync_set_archive_auto
      Src: /src/casync/src/casync-tool.c:1644,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1646,1
    - Dst: ca_sync_set_index_fd
      Src: /src/casync/src/casync-tool.c:1650,1
    - Dst: ca_sync_set_index_auto
      Src: /src/casync/src/casync-tool.c:1652,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1654,1
    - Dst: ca_sync_set_store_auto
      Src: /src/casync/src/casync-tool.c:1659,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1661,1
    - Dst: load_seeds_and_extra_stores
      Src: /src/casync/src/casync-tool.c:1664,1
    - Dst: load_feature_flags
      Src: /src/casync/src/casync-tool.c:1668,1
    - Dst: ca_sync_set_punch_holes
      Src: /src/casync/src/casync-tool.c:1672,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1674,1
    - Dst: ca_sync_set_reflink
      Src: /src/casync/src/casync-tool.c:1676,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1678,1
    - Dst: ca_sync_set_hardlink
      Src: /src/casync/src/casync-tool.c:1680,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1682,1
    - Dst: ca_sync_seek_path
      Src: /src/casync/src/casync-tool.c:1685,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1687,1
    - Dst: send_notify
      Src: /src/casync/src/casync-tool.c:1690,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:1694,1
    - Dst: ca_sync_step
      Src: /src/casync/src/casync-tool.c:1698,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1700,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1702,1
    - Dst: verbose_print_done_extract
      Src: /src/casync/src/casync-tool.c:1707,1
    - Dst: verbose_print_path
      Src: /src/casync/src/casync-tool.c:1711,1
    - Dst: verbose_print_path
      Src: /src/casync/src/casync-tool.c:1717,1
    - Dst: process_step_generic
      Src: /src/casync/src/casync-tool.c:1729,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:1735,1
    - Dst: verbose_print_feature_flags
      Src: /src/casync/src/casync-tool.c:1738,1
    - Dst: progress
      Src: /src/casync/src/casync-tool.c:1741,1
    CyclomaticComplexity: 82
    EdgeCount: 82
    ICount: 220
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (false)
      pos:
        line_end: 1734
        line_start: 1734
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 1745
      start: 1455
    functionDepth: 10
    functionLinenumber: 1455
    functionLinenumberEnd: 1745
    functionName: verb_extract
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - load_seeds_and_extra_stores
    - ca_sync_set_rate_limit_bps
    - ca_sync_set_boundary_path
    - IN_SET
    - verbose_print_done_extract
    - process_step_generic
    - log_error_errno
    - set_default_store
    - ca_sync_add_seed_path
    - ca_sync_set_archive_fd
    - ca_sync_seek_path
    - open
    - _cleanup_
    - ca_sync_set_index_auto
    - S_ISDIR
    - log_oom
    - progress
    - ca_sync_set_archive_auto
    - ca_sync_set_base_path
    - normalize_seek_path
    - S_ISBLK
    - strdup
    - ca_sync_set_punch_holes
    - ca_sync_set_hardlink
    - assert
    - ca_strip_file_url
    - ca_locator_has_suffix
    - ca_sync_set_boundary_fd
    - ca_sync_set_index_fd
    - ca_sync_set_store_auto
    - ca_sync_step
    - S_ISREG
    - ca_sync_set_reflink
    - verbose_print_feature_flags
    - ca_sync_new_decode
    - ca_sync_set_base_mode
    - ca_sync_set_log_level
    - streq
    - ca_classify_locator
    - send_notify
    - fstat
    - verbose_print_path
    - ca_sync_set_base_fd
    - load_feature_flags
    - log_error
    linkageType: ''
    returnType: int
    signature: int verb_extract(int argc, char *argv[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:1751,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:1752,1
    - Dst: strlen
      Src: /src/casync/src/casync-tool.c:1755,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:1765,1
    - Dst: octchar
      Src: /src/casync/src/casync-tool.c:1768,1
    - Dst: octchar
      Src: /src/casync/src/casync-tool.c:1769,1
    - Dst: octchar
      Src: /src/casync/src/casync-tool.c:1770,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - p
    - l
    - ret
    argTypes:
    - char*
    - size_t
    - char**
    assertStmts:
    - condition: (p)
      pos:
        line_end: 1750
        line_start: 1750
        source_file: /src/casync/src/casync-tool.c
    - condition: (ret)
      pos:
        line_end: 1751
        line_start: 1751
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 1779
      start: 1747
    functionDepth: 1
    functionLinenumber: 1747
    functionLinenumberEnd: 1779
    functionName: mtree_escape_full
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - assert
    - strlen
    - octchar
    - IN_SET
    linkageType: ''
    returnType: int
    signature: int mtree_escape_full(const char *p, size_t l, char **ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mtree_escape_full
      Src: /src/casync/src/casync-tool.c:1782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - ret
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1783
      start: 1781
    functionDepth: 2
    functionLinenumber: 1781
    functionLinenumberEnd: 1783
    functionName: mtree_escape
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - mtree_escape_full
    linkageType: ''
    returnType: int
    signature: int mtree_escape(const char *p, char **ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isempty
      Src: /src/casync/src/casync-tool.c:1789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1785
    functionDepth: 1
    functionLinenumber: 1785
    functionLinenumberEnd: 1790
    functionName: empty_to_dot
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - isempty
    linkageType: ''
    returnType: char
    signature: char *empty_to_dot(const char *p)
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: ca_sync_current_mode
      Src: /src/casync/src/casync-tool.c:1797,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1799,1
    - Dst: ca_sync_current_path
      Src: /src/casync/src/casync-tool.c:1801,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1803,1
    - Dst: mtree_escape
      Src: /src/casync/src/casync-tool.c:1805,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1807,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:1809,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1812,1
    - Dst: ls_format_mode
      Src: /src/casync/src/casync-tool.c:1812,1
    - Dst: empty_to_dot
      Src: /src/casync/src/casync-tool.c:1812,1
    - Dst: ca_sync_seek_next_sibling
      Src: /src/casync/src/casync-tool.c:1815,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1817,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:1822,1
    - Dst: ca_sync_get_feature_flags
      Src: /src/casync/src/casync-tool.c:1834,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:1836,1
    - Dst: ca_sync_current_target
      Src: /src/casync/src/casync-tool.c:1838,1
    - Dst: ca_sync_current_mtime
      Src: /src/casync/src/casync-tool.c:1839,1
    - Dst: ca_sync_current_size
      Src: /src/casync/src/casync-tool.c:1840,1
    - Dst: ca_sync_current_uid
      Src: /src/casync/src/casync-tool.c:1841,1
    - Dst: ca_sync_current_gid
      Src: /src/casync/src/casync-tool.c:1842,1
    - Dst: ca_sync_current_user
      Src: /src/casync/src/casync-tool.c:1843,1
    - Dst: ca_sync_current_group
      Src: /src/casync/src/casync-tool.c:1844,1
    - Dst: ca_sync_current_rdev
      Src: /src/casync/src/casync-tool.c:1845,1
    - Dst: ca_sync_current_chattr
      Src: /src/casync/src/casync-tool.c:1846,1
    - Dst: ca_sync_current_fat_attrs
      Src: /src/casync/src/casync-tool.c:1847,1
    - Dst: isempty
      Src: /src/casync/src/casync-tool.c:1854,1
    - Dst: fputs
      Src: /src/casync/src/casync-tool.c:1855,1
    - Dst: fputs
      Src: /src/casync/src/casync-tool.c:1856,1
    - Dst: empty_to_dot
      Src: /src/casync/src/casync-tool.c:1856,1
    - Dst: S_ISLNK
      Src: /src/casync/src/casync-tool.c:1858,1
    - Dst: fputs
      Src: /src/casync/src/casync-tool.c:1859,1
    - Dst: S_ISDIR
      Src: /src/casync/src/casync-tool.c:1860,1
    - Dst: fputs
      Src: /src/casync/src/casync-tool.c:1861,1
    - Dst: S_ISREG
      Src: /src/casync/src/casync-tool.c:1862,1
    - Dst: fputs
      Src: /src/casync/src/casync-tool.c:1863,1
    - Dst: S_ISSOCK
      Src: /src/casync/src/casync-tool.c:1864,1
    - Dst: fputs
      Src: /src/casync/src/casync-tool.c:1865,1
    - Dst: S_ISCHR
      Src: /src/casync/src/casync-tool.c:1866,1
    - Dst: fputs
      Src: /src/casync/src/casync-tool.c:1867,1
    - Dst: S_ISBLK
      Src: /src/casync/src/casync-tool.c:1868,1
    - Dst: fputs
      Src: /src/casync/src/casync-tool.c:1869,1
    - Dst: S_ISFIFO
      Src: /src/casync/src/casync-tool.c:1870,1
    - Dst: fputs
      Src: /src/casync/src/casync-tool.c:1871,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1873,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1876,1
    - Dst: mfree
      Src: /src/casync/src/casync-tool.c:1879,1
    - Dst: mtree_escape
      Src: /src/casync/src/casync-tool.c:1881,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1882,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1884,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1888,1
    - Dst: major
      Src: /src/casync/src/casync-tool.c:1889,1
    - Dst: minor
      Src: /src/casync/src/casync-tool.c:1890,1
    - Dst: uid_is_valid
      Src: /src/casync/src/casync-tool.c:1892,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1893,1
    - Dst: uid_is_valid
      Src: /src/casync/src/casync-tool.c:1894,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1895,1
    - Dst: mfree
      Src: /src/casync/src/casync-tool.c:1898,1
    - Dst: mtree_escape
      Src: /src/casync/src/casync-tool.c:1900,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1901,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1903,1
    - Dst: mfree
      Src: /src/casync/src/casync-tool.c:1907,1
    - Dst: mtree_escape
      Src: /src/casync/src/casync-tool.c:1909,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:1910,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1912,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1932,1
    - Dst: ELEMENTSOF
      Src: /src/casync/src/casync-tool.c:1934,1
    - Dst: ca_feature_flags_to_fat_attrs
      Src: /src/casync/src/casync-tool.c:1941,1
    - Dst: ca_feature_flags_to_chattr
      Src: /src/casync/src/casync-tool.c:1943,1
    - Dst: assert_not_reached
      Src: /src/casync/src/casync-tool.c:1945,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1947,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1953,1
    - Dst: UINT64_C
      Src: /src/casync/src/casync-tool.c:1954,1
    - Dst: UINT64_C
      Src: /src/casync/src/casync-tool.c:1955,1
    - Dst: S_ISREG
      Src: /src/casync/src/casync-tool.c:1957,1
    - Dst: putchar
      Src: /src/casync/src/casync-tool.c:1960,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:1976,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:1976,1
    - Dst: ca_sync_current_target
      Src: /src/casync/src/casync-tool.c:1978,1
    - Dst: ca_sync_current_mtime
      Src: /src/casync/src/casync-tool.c:1979,1
    - Dst: ca_sync_current_size
      Src: /src/casync/src/casync-tool.c:1980,1
    - Dst: ca_sync_current_uid
      Src: /src/casync/src/casync-tool.c:1981,1
    - Dst: ca_sync_current_gid
      Src: /src/casync/src/casync-tool.c:1982,1
    - Dst: ca_sync_current_user
      Src: /src/casync/src/casync-tool.c:1983,1
    - Dst: ca_sync_current_group
      Src: /src/casync/src/casync-tool.c:1984,1
    - Dst: ca_sync_current_rdev
      Src: /src/casync/src/casync-tool.c:1985,1
    - Dst: ca_sync_current_chattr
      Src: /src/casync/src/casync-tool.c:1986,1
    - Dst: ca_sync_current_fat_attrs
      Src: /src/casync/src/casync-tool.c:1987,1
    - Dst: ca_sync_current_archive_offset
      Src: /src/casync/src/casync-tool.c:1988,1
    - Dst: ca_sync_current_quota_projid
      Src: /src/casync/src/casync-tool.c:1990,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1992,1
    - Dst: empty_to_dot
      Src: /src/casync/src/casync-tool.c:1994,1
    - Dst: strna
      Src: /src/casync/src/casync-tool.c:1995,1
    - Dst: ls_format_mode
      Src: /src/casync/src/casync-tool.c:1995,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:1998,1
    - Dst: strna
      Src: /src/casync/src/casync-tool.c:1998,1
    - Dst: ls_format_chattr
      Src: /src/casync/src/casync-tool.c:1998,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2001,1
    - Dst: strna
      Src: /src/casync/src/casync-tool.c:2001,1
    - Dst: ls_format_fat_attrs
      Src: /src/casync/src/casync-tool.c:2001,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2004,1
    - Dst: UINT64_C
      Src: /src/casync/src/casync-tool.c:2011,1
    - Dst: localtime_r
      Src: /src/casync/src/casync-tool.c:2012,1
    - Dst: strftime
      Src: /src/casync/src/casync-tool.c:2013,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2014,1
    - Dst: UINT64_C
      Src: /src/casync/src/casync-tool.c:2014,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2018,1
    - Dst: uid_is_valid
      Src: /src/casync/src/casync-tool.c:2020,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2021,1
    - Dst: mfree
      Src: /src/casync/src/casync-tool.c:2024,1
    - Dst: mtree_escape
      Src: /src/casync/src/casync-tool.c:2026,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2027,1
    - Dst: uid_is_valid
      Src: /src/casync/src/casync-tool.c:2030,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2031,1
    - Dst: uid_is_valid
      Src: /src/casync/src/casync-tool.c:2032,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2033,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2035,1
    - Dst: gid_is_valid
      Src: /src/casync/src/casync-tool.c:2038,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2039,1
    - Dst: mfree
      Src: /src/casync/src/casync-tool.c:2042,1
    - Dst: mtree_escape
      Src: /src/casync/src/casync-tool.c:2044,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2045,1
    - Dst: gid_is_valid
      Src: /src/casync/src/casync-tool.c:2048,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2049,1
    - Dst: gid_is_valid
      Src: /src/casync/src/casync-tool.c:2050,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2051,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2053,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2057,1
    - Dst: mfree
      Src: /src/casync/src/casync-tool.c:2060,1
    - Dst: mtree_escape
      Src: /src/casync/src/casync-tool.c:2062,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2063,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2065,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2069,1
    - Dst: major
      Src: /src/casync/src/casync-tool.c:2069,1
    - Dst: minor
      Src: /src/casync/src/casync-tool.c:2069,1
    - Dst: ca_sync_current_xattr
      Src: /src/casync/src/casync-tool.c:2071,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2076,1
    - Dst: mtree_escape
      Src: /src/casync/src/casync-tool.c:2080,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2081,1
    - Dst: mtree_escape_full
      Src: /src/casync/src/casync-tool.c:2083,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2084,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2086,1
    - Dst: ca_sync_current_xattr
      Src: /src/casync/src/casync-tool.c:2087,1
    - Dst: S_ISDIR
      Src: /src/casync/src/casync-tool.c:2090,1
    CyclomaticComplexity: 67
    EdgeCount: 67
    ICount: 176
    argCount: 3
    argNames:
    - arg0
    - s
    - toplevel_shown
    argTypes:
    - char*
    - CaSync*
    - bool*
    assertStmts:
    - condition: (streq(arg0, "stat"))
      pos:
        line_end: 1975
        line_start: 1975
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 2097
      start: 1792
    functionDepth: 8
    functionLinenumber: 1792
    functionLinenumberEnd: 2097
    functionName: list_one_file
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - ca_feature_flags_to_fat_attrs
    - S_ISFIFO
    - ELEMENTSOF
    - ca_sync_current_archive_offset
    - log_error_errno
    - ca_sync_current_path
    - strftime
    - isempty
    - ca_sync_current_mode
    - S_ISLNK
    - ca_sync_current_uid
    - S_ISSOCK
    - assert_not_reached
    - S_ISCHR
    - ls_format_fat_attrs
    - S_ISDIR
    - log_oom
    - printf
    - localtime_r
    - S_ISBLK
    - ca_sync_current_xattr
    - minor
    - assert
    - strna
    - ca_sync_current_user
    - ca_sync_seek_next_sibling
    - ca_sync_current_quota_projid
    - empty_to_dot
    - ls_format_mode
    - mfree
    - ca_sync_current_fat_attrs
    - ca_sync_current_target
    - S_ISREG
    - major
    - putchar
    - ca_sync_current_mtime
    - ca_sync_current_group
    - ca_sync_current_gid
    - ca_feature_flags_to_chattr
    - streq
    - gid_is_valid
    - ca_sync_current_rdev
    - mtree_escape_full
    - ca_sync_get_feature_flags
    - UINT64_C
    - fputs
    - uid_is_valid
    - mtree_escape
    - ca_sync_current_size
    - ls_format_chattr
    - ca_sync_current_chattr
    linkageType: ''
    returnType: int
    signature: int list_one_file(const char *arg0, CaSync *s, bool *toplevel_shown)
  - BBCount: 78
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2110,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2112,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2117,1
    - Dst: ca_strip_file_url
      Src: /src/casync/src/casync-tool.c:2122,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2124,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2137,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:2141,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:2142,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:2144,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:2148,1
    - Dst: strdup
      Src: /src/casync/src/casync-tool.c:2149,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2151,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:2154,1
    - Dst: ca_classify_locator
      Src: /src/casync/src/casync-tool.c:2160,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2162,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2167,1
    - Dst: open
      Src: /src/casync/src/casync-tool.c:2172,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2174,1
    - Dst: fstat
      Src: /src/casync/src/casync-tool.c:2181,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2182,1
    - Dst: S_ISDIR
      Src: /src/casync/src/casync-tool.c:2184,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2188,1
    - Dst: S_ISREG
      Src: /src/casync/src/casync-tool.c:2192,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2204,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:2210,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2211,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2215,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2221,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:2225,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2226,1
    - Dst: normalize_seek_path
      Src: /src/casync/src/casync-tool.c:2230,1
    - Dst: set_default_store
      Src: /src/casync/src/casync-tool.c:2233,1
    - Dst: ca_sync_new_encode
      Src: /src/casync/src/casync-tool.c:2239,1
    - Dst: ca_sync_new_decode
      Src: /src/casync/src/casync-tool.c:2241,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2243,1
    - Dst: load_chunk_size
      Src: /src/casync/src/casync-tool.c:2245,1
    - Dst: ca_sync_set_archive_fd
      Src: /src/casync/src/casync-tool.c:2251,1
    - Dst: ca_sync_set_archive_auto
      Src: /src/casync/src/casync-tool.c:2253,1
    - Dst: ca_sync_set_index_fd
      Src: /src/casync/src/casync-tool.c:2256,1
    - Dst: ca_sync_set_index_auto
      Src: /src/casync/src/casync-tool.c:2258,1
    - Dst: ca_sync_set_base_fd
      Src: /src/casync/src/casync-tool.c:2260,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:2262,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2264,1
    - Dst: ca_sync_set_base_mode
      Src: /src/casync/src/casync-tool.c:2268,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2270,1
    - Dst: ca_sync_set_store_auto
      Src: /src/casync/src/casync-tool.c:2274,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2276,1
    - Dst: load_seeds_and_extra_stores
      Src: /src/casync/src/casync-tool.c:2279,1
    - Dst: load_feature_flags
      Src: /src/casync/src/casync-tool.c:2283,1
    - Dst: ca_sync_set_payload
      Src: /src/casync/src/casync-tool.c:2288,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2290,1
    - Dst: ca_sync_seek_path
      Src: /src/casync/src/casync-tool.c:2294,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2296,1
    - Dst: STR_IN_SET
      Src: /src/casync/src/casync-tool.c:2299,1
    - Dst: ca_sync_enable_payload_digest
      Src: /src/casync/src/casync-tool.c:2300,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2302,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:2305,1
    - Dst: ca_sync_enable_hardlink_digest
      Src: /src/casync/src/casync-tool.c:2306,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2308,1
    - Dst: send_notify
      Src: /src/casync/src/casync-tool.c:2311,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:2315,1
    - Dst: ca_sync_step
      Src: /src/casync/src/casync-tool.c:2319,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2321,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2323,1
    - Dst: list_one_file
      Src: /src/casync/src/casync-tool.c:2331,1
    - Dst: ca_sync_current_mode
      Src: /src/casync/src/casync-tool.c:2340,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2342,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:2344,1
    - Dst: S_ISREG
      Src: /src/casync/src/casync-tool.c:2344,1
    - Dst: ca_sync_get_payload_digest
      Src: /src/casync/src/casync-tool.c:2353,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2355,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2359,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/casync-tool.c:2359,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:2361,1
    - Dst: S_ISDIR
      Src: /src/casync/src/casync-tool.c:2361,1
    - Dst: ca_sync_get_payload_digest
      Src: /src/casync/src/casync-tool.c:2365,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2367,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/casync-tool.c:2367,1
    - Dst: ca_sync_get_hardlink_digest
      Src: /src/casync/src/casync-tool.c:2369,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2371,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/casync-tool.c:2371,1
    - Dst: process_step_generic
      Src: /src/casync/src/casync-tool.c:2387,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:2394,1
    - Dst: verbose_print_feature_flags
      Src: /src/casync/src/casync-tool.c:2397,1
    - Dst: progress
      Src: /src/casync/src/casync-tool.c:2400,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 218
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (false)
      pos:
        line_end: 2261
        line_start: 2261
        source_file: /src/casync/src/casync-tool.c
    - condition: (false)
      pos:
        line_end: 2393
        line_start: 2393
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 2404
      start: 2099
    functionDepth: 10
    functionLinenumber: 2099
    functionLinenumberEnd: 2404
    functionName: verb_list
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - load_seeds_and_extra_stores
    - IN_SET
    - process_step_generic
    - log_error_errno
    - STR_IN_SET
    - ca_chunk_id_format
    - set_default_store
    - ca_sync_current_mode
    - ca_sync_set_archive_fd
    - ca_sync_seek_path
    - open
    - ca_sync_new_encode
    - _cleanup_
    - ca_sync_set_payload
    - ca_sync_set_index_auto
    - S_ISDIR
    - log_oom
    - ca_sync_enable_payload_digest
    - progress
    - ca_sync_set_archive_auto
    - printf
    - normalize_seek_path
    - strdup
    - log_info
    - assert
    - ca_sync_get_payload_digest
    - ca_strip_file_url
    - ca_locator_has_suffix
    - ca_sync_set_index_fd
    - load_chunk_size
    - ca_sync_set_store_auto
    - ca_sync_step
    - S_ISREG
    - list_one_file
    - verbose_print_feature_flags
    - ca_sync_new_decode
    - ca_sync_set_base_mode
    - ca_sync_get_hardlink_digest
    - streq
    - ca_classify_locator
    - send_notify
    - fstat
    - ca_sync_set_base_fd
    - ca_sync_enable_hardlink_digest
    - load_feature_flags
    - log_error
    linkageType: ''
    returnType: int
    signature: int verb_list(int argc, char *argv[])
  - BBCount: 77
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2421,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2423,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2428,1
    - Dst: ca_strip_file_url
      Src: /src/casync/src/casync-tool.c:2433,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2435,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2452,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:2456,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:2458,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:2460,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:2462,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:2466,1
    - Dst: strdup
      Src: /src/casync/src/casync-tool.c:2467,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2469,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:2472,1
    - Dst: ca_classify_locator
      Src: /src/casync/src/casync-tool.c:2477,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2479,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2484,1
    - Dst: open
      Src: /src/casync/src/casync-tool.c:2489,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2491,1
    - Dst: fstat
      Src: /src/casync/src/casync-tool.c:2498,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2499,1
    - Dst: S_ISDIR
      Src: /src/casync/src/casync-tool.c:2501,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2506,1
    - Dst: S_ISREG
      Src: /src/casync/src/casync-tool.c:2510,1
    - Dst: S_ISBLK
      Src: /src/casync/src/casync-tool.c:2510,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:2514,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2515,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2519,1
    - Dst: streq_ptr
      Src: /src/casync/src/casync-tool.c:2524,1
    - Dst: mfree
      Src: /src/casync/src/casync-tool.c:2525,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2528,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:2532,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2533,1
    - Dst: normalize_seek_path
      Src: /src/casync/src/casync-tool.c:2537,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:2539,1
    - Dst: set_default_store
      Src: /src/casync/src/casync-tool.c:2540,1
    - Dst: ca_sync_new_encode
      Src: /src/casync/src/casync-tool.c:2546,1
    - Dst: ca_sync_new_decode
      Src: /src/casync/src/casync-tool.c:2548,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2550,1
    - Dst: load_chunk_size
      Src: /src/casync/src/casync-tool.c:2552,1
    - Dst: ca_sync_set_base_fd
      Src: /src/casync/src/casync-tool.c:2557,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:2558,1
    - Dst: ca_sync_set_index_fd
      Src: /src/casync/src/casync-tool.c:2560,1
    - Dst: ca_sync_set_index_auto
      Src: /src/casync/src/casync-tool.c:2562,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:2566,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:2566,1
    - Dst: ca_sync_set_archive_auto
      Src: /src/casync/src/casync-tool.c:2570,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2573,1
    - Dst: strerror
      Src: /src/casync/src/casync-tool.c:2573,1
    - Dst: ca_sync_set_base_mode
      Src: /src/casync/src/casync-tool.c:2577,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:2577,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2579,1
    - Dst: ca_sync_set_store_auto
      Src: /src/casync/src/casync-tool.c:2583,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2585,1
    - Dst: load_seeds_and_extra_stores
      Src: /src/casync/src/casync-tool.c:2588,1
    - Dst: load_feature_flags
      Src: /src/casync/src/casync-tool.c:2592,1
    - Dst: IN_SET
      Src: /src/casync/src/casync-tool.c:2592,1
    - Dst: ca_sync_enable_archive_digest
      Src: /src/casync/src/casync-tool.c:2596,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2598,1
    - Dst: ca_sync_seek_path
      Src: /src/casync/src/casync-tool.c:2601,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2603,1
    - Dst: send_notify
      Src: /src/casync/src/casync-tool.c:2608,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2612,1
    - Dst: ca_sync_step
      Src: /src/casync/src/casync-tool.c:2616,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2618,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2620,1
    - Dst: ca_sync_get_archive_digest
      Src: /src/casync/src/casync-tool.c:2630,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2632,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2634,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/casync-tool.c:2634,1
    - Dst: ca_sync_current_mode
      Src: /src/casync/src/casync-tool.c:2649,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2651,1
    - Dst: S_ISREG
      Src: /src/casync/src/casync-tool.c:2653,1
    - Dst: ca_sync_enable_payload_digest
      Src: /src/casync/src/casync-tool.c:2656,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2658,1
    - Dst: S_ISDIR
      Src: /src/casync/src/casync-tool.c:2660,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2663,1
    - Dst: process_step_generic
      Src: /src/casync/src/casync-tool.c:2670,1
    - Dst: ca_sync_get_payload_digest
      Src: /src/casync/src/casync-tool.c:2682,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2684,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:2686,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/casync-tool.c:2686,1
    - Dst: process_step_generic
      Src: /src/casync/src/casync-tool.c:2699,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:2705,1
    - Dst: verbose_print_feature_flags
      Src: /src/casync/src/casync-tool.c:2708,1
    - Dst: progress
      Src: /src/casync/src/casync-tool.c:2711,1
    CyclomaticComplexity: 81
    EdgeCount: 81
    ICount: 215
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (false)
      pos:
        line_end: 2704
        line_start: 2704
        source_file: /src/casync/src/casync-tool.c
    - condition: (IN_SET(operation, DIGEST_BLOB, DIGEST_ARCHIVE))
      pos:
        line_end: 2565
        line_start: 2565
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 2715
      start: 2406
    functionDepth: 10
    functionLinenumber: 2406
    functionLinenumberEnd: 2715
    functionName: verb_digest
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - load_seeds_and_extra_stores
    - IN_SET
    - process_step_generic
    - log_error_errno
    - ca_sync_enable_archive_digest
    - streq_ptr
    - ca_chunk_id_format
    - set_default_store
    - ca_sync_current_mode
    - ca_sync_seek_path
    - open
    - _cleanup_
    - ca_sync_new_encode
    - ca_sync_set_index_auto
    - S_ISDIR
    - log_oom
    - ca_sync_enable_payload_digest
    - progress
    - ca_sync_set_archive_auto
    - printf
    - normalize_seek_path
    - S_ISBLK
    - strdup
    - assert
    - ca_sync_get_payload_digest
    - ca_strip_file_url
    - ca_locator_has_suffix
    - mfree
    - ca_sync_set_index_fd
    - load_chunk_size
    - ca_sync_set_store_auto
    - ca_sync_step
    - S_ISREG
    - verbose_print_feature_flags
    - ca_sync_new_decode
    - ca_sync_set_base_mode
    - streq
    - ca_classify_locator
    - ca_sync_get_archive_digest
    - send_notify
    - fstat
    - strerror
    - ca_sync_set_base_fd
    - load_feature_flags
    - log_error
    linkageType: ''
    returnType: int
    signature: int verb_digest(int argc, char *argv[])
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2727,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2729,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2732,1
    - Dst: ca_strip_file_url
      Src: /src/casync/src/casync-tool.c:2737,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2739,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2750,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:2754,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:2755,1
    - Dst: ca_sync_new_decode
      Src: /src/casync/src/casync-tool.c:2762,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2764,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:2766,1
    - Dst: set_default_store
      Src: /src/casync/src/casync-tool.c:2770,1
    - Dst: ca_sync_set_log_level
      Src: /src/casync/src/casync-tool.c:2776,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2778,1
    - Dst: ca_sync_set_rate_limit_bps
      Src: /src/casync/src/casync-tool.c:2782,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2784,1
    - Dst: ca_sync_set_archive_fd
      Src: /src/casync/src/casync-tool.c:2789,1
    - Dst: ca_sync_set_archive_auto
      Src: /src/casync/src/casync-tool.c:2791,1
    - Dst: ca_sync_set_index_fd
      Src: /src/casync/src/casync-tool.c:2795,1
    - Dst: ca_sync_set_index_auto
      Src: /src/casync/src/casync-tool.c:2797,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:2799,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2801,1
    - Dst: ca_sync_set_base_mode
      Src: /src/casync/src/casync-tool.c:2805,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2807,1
    - Dst: ca_sync_set_store_auto
      Src: /src/casync/src/casync-tool.c:2810,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2812,1
    - Dst: load_seeds_and_extra_stores
      Src: /src/casync/src/casync-tool.c:2815,1
    - Dst: ca_fuse_run
      Src: /src/casync/src/casync-tool.c:2819,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2821,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 76
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (false)
      pos:
        line_end: 2798
        line_start: 2798
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 2824
      start: 2717
    functionDepth: 12
    functionLinenumber: 2717
    functionLinenumberEnd: 2824
    functionName: verb_mount
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - load_seeds_and_extra_stores
    - ca_sync_set_rate_limit_bps
    - log_error_errno
    - set_default_store
    - ca_sync_set_archive_fd
    - _cleanup_
    - ca_sync_set_index_auto
    - log_oom
    - ca_sync_set_archive_auto
    - ca_fuse_run
    - assert
    - ca_strip_file_url
    - ca_locator_has_suffix
    - ca_sync_set_index_fd
    - ca_sync_set_store_auto
    - ca_sync_new_decode
    - ca_sync_set_base_mode
    - ca_sync_set_log_level
    - streq
    - log_error
    linkageType: ''
    returnType: int
    signature: int verb_mount(int argc, char *argv[])
  - BBCount: 105
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2835,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2836,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2837,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2839,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2847,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2848,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:2849,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2853,1
    - Dst: ca_strip_file_url
      Src: /src/casync/src/casync-tool.c:2858,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2860,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2873,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:2878,1
    - Dst: ca_locator_has_suffix
      Src: /src/casync/src/casync-tool.c:2879,1
    - Dst: ca_sync_new_decode
      Src: /src/casync/src/casync-tool.c:2886,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2888,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:2892,1
    - Dst: set_default_store
      Src: /src/casync/src/casync-tool.c:2896,1
    - Dst: ca_sync_set_log_level
      Src: /src/casync/src/casync-tool.c:2902,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2904,1
    - Dst: ca_sync_set_rate_limit_bps
      Src: /src/casync/src/casync-tool.c:2908,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2910,1
    - Dst: ca_sync_set_archive_fd
      Src: /src/casync/src/casync-tool.c:2915,1
    - Dst: ca_sync_set_archive_auto
      Src: /src/casync/src/casync-tool.c:2917,1
    - Dst: ca_sync_set_index_fd
      Src: /src/casync/src/casync-tool.c:2921,1
    - Dst: ca_sync_set_index_auto
      Src: /src/casync/src/casync-tool.c:2923,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:2925,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2927,1
    - Dst: ca_sync_set_base_mode
      Src: /src/casync/src/casync-tool.c:2933,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2935,1
    - Dst: ca_sync_set_store_auto
      Src: /src/casync/src/casync-tool.c:2940,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2942,1
    - Dst: load_seeds_and_extra_stores
      Src: /src/casync/src/casync-tool.c:2947,1
    - Dst: ca_block_device_new
      Src: /src/casync/src/casync-tool.c:2951,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:2953,1
    - Dst: ca_block_device_test_nbd
      Src: /src/casync/src/casync-tool.c:2958,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2960,1
    - Dst: ca_block_device_set_path
      Src: /src/casync/src/casync-tool.c:2963,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2965,1
    - Dst: path_startswith
      Src: /src/casync/src/casync-tool.c:2971,1
    - Dst: ca_block_device_set_friendly_name
      Src: /src/casync/src/casync-tool.c:2973,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:2975,1
    - Dst: ca_sync_get_archive_size
      Src: /src/casync/src/casync-tool.c:2992,1
    - Dst: ca_block_device_set_size
      Src: /src/casync/src/casync-tool.c:2994,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:2996,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3002,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3006,1
    - Dst: ca_sync_step
      Src: /src/casync/src/casync-tool.c:3010,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3012,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3016,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3023,1
    - Dst: process_step_generic
      Src: /src/casync/src/casync-tool.c:3032,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:3038,1
    - Dst: ca_block_device_open
      Src: /src/casync/src/casync-tool.c:3042,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3044,1
    - Dst: ca_block_device_get_path
      Src: /src/casync/src/casync-tool.c:3048,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3050,1
    - Dst: ca_block_device_get_devnum
      Src: /src/casync/src/casync-tool.c:3054,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3056,1
    - Dst: udev_new
      Src: /src/casync/src/casync-tool.c:3061,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3063,1
    - Dst: udev_monitor_new_from_netlink
      Src: /src/casync/src/casync-tool.c:3067,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3069,1
    - Dst: udev_monitor_filter_add_match_subsystem_devtype
      Src: /src/casync/src/casync-tool.c:3073,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3075,1
    - Dst: udev_monitor_enable_receiving
      Src: /src/casync/src/casync-tool.c:3079,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3081,1
    - Dst: udev_device_new_from_devnum
      Src: /src/casync/src/casync-tool.c:3085,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3087,1
    - Dst: udev_device_get_is_initialized
      Src: /src/casync/src/casync-tool.c:3091,1
    - Dst: udev_device_unref
      Src: /src/casync/src/casync-tool.c:3092,1
    - Dst: symlink
      Src: /src/casync/src/casync-tool.c:3098,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3099,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:3106,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:3118,1
    - Dst: udev_monitor_receive_device
      Src: /src/casync/src/casync-tool.c:3120,1
    - Dst: udev_device_get_devnum
      Src: /src/casync/src/casync-tool.c:3121,1
    - Dst: udev_monitor_unref
      Src: /src/casync/src/casync-tool.c:3130,1
    - Dst: udev_unref
      Src: /src/casync/src/casync-tool.c:3131,1
    - Dst: strjoin
      Src: /src/casync/src/casync-tool.c:3134,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3137,1
    - Dst: send_notify
      Src: /src/casync/src/casync-tool.c:3141,1
    - Dst: ca_block_device_step
      Src: /src/casync/src/casync-tool.c:3145,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3147,1
    - Dst: ca_block_device_get_poll_fd
      Src: /src/casync/src/casync-tool.c:3158,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3160,1
    - Dst: udev_monitor_get_fd
      Src: /src/casync/src/casync-tool.c:3167,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3169,1
    - Dst: block_exit_handler
      Src: /src/casync/src/casync-tool.c:3176,1
    - Dst: ppoll
      Src: /src/casync/src/casync-tool.c:3186,1
    - Dst: block_exit_handler
      Src: /src/casync/src/casync-tool.c:3195,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3201,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:3208,1
    - Dst: ca_block_device_get_request_offset
      Src: /src/casync/src/casync-tool.c:3210,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3212,1
    - Dst: ca_block_device_get_request_size
      Src: /src/casync/src/casync-tool.c:3216,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3218,1
    - Dst: ca_sync_seek_offset
      Src: /src/casync/src/casync-tool.c:3222,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3224,1
    - Dst: realloc_buffer_empty
      Src: /src/casync/src/casync-tool.c:3228,1
    - Dst: ca_sync_step
      Src: /src/casync/src/casync-tool.c:3238,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3240,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3244,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:3253,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync-tool.c:3253,1
    - Dst: realloc_buffer_extend0
      Src: /src/casync/src/casync-tool.c:3255,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync-tool.c:3255,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3256,1
    - Dst: ca_block_device_put_data
      Src: /src/casync/src/casync-tool.c:3260,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/casync-tool.c:3260,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3262,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/src/casync-tool.c:3266,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3268,1
    - Dst: ca_sync_get_payload
      Src: /src/casync/src/casync-tool.c:3279,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3281,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync-tool.c:3285,1
    - Dst: ca_block_device_put_data
      Src: /src/casync/src/casync-tool.c:3288,1
    - Dst: MIN
      Src: /src/casync/src/casync-tool.c:3288,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3290,1
    - Dst: realloc_buffer_append
      Src: /src/casync/src/casync-tool.c:3298,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3299,1
    - Dst: realloc_buffer_size
      Src: /src/casync/src/casync-tool.c:3303,1
    - Dst: ca_block_device_put_data
      Src: /src/casync/src/casync-tool.c:3304,1
    - Dst: realloc_buffer_data
      Src: /src/casync/src/casync-tool.c:3304,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3306,1
    - Dst: realloc_buffer_advance
      Src: /src/casync/src/casync-tool.c:3310,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3312,1
    - Dst: process_step_generic
      Src: /src/casync/src/casync-tool.c:3329,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:3340,1
    - Dst: unlink
      Src: /src/casync/src/casync-tool.c:3350,1
    CyclomaticComplexity: 161
    EdgeCount: 161
    ICount: 444
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (false)
      pos:
        line_end: 2924
        line_start: 2924
        source_file: /src/casync/src/casync-tool.c
    - condition: (r == CA_BLOCK_DEVICE_REQUEST)
      pos:
        line_end: 3207
        line_start: 3207
        source_file: /src/casync/src/casync-tool.c
    - condition: (false)
      pos:
        line_end: 3037
        line_start: 3037
        source_file: /src/casync/src/casync-tool.c
    - condition: (false)
      pos:
        line_end: 3339
        line_start: 3339
        source_file: /src/casync/src/casync-tool.c
    - condition: (realloc_buffer_size(&buffer) < req_size)
      pos:
        line_end: 3252
        line_start: 3252
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 3353
      start: 2826
    functionDepth: 10
    functionLinenumber: 2826
    functionLinenumberEnd: 3353
    functionName: verb_mkdev
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - load_seeds_and_extra_stores
    - ca_block_device_test_nbd
    - ca_sync_set_rate_limit_bps
    - unlink
    - process_step_generic
    - log_error_errno
    - ca_block_device_get_devnum
    - ca_block_device_set_size
    - ca_sync_get_archive_size
    - realloc_buffer_empty
    - set_default_store
    - udev_unref
    - ca_block_device_get_path
    - udev_monitor_filter_add_match_subsystem_devtype
    - ca_block_device_get_request_offset
    - ca_sync_get_payload
    - ca_sync_set_archive_fd
    - realloc_buffer_append
    - MIN
    - realloc_buffer_extend0
    - _cleanup_
    - block_exit_handler
    - ca_block_device_set_friendly_name
    - ca_sync_set_index_auto
    - log_oom
    - udev_monitor_enable_receiving
    - ca_sync_set_archive_auto
    - printf
    - ca_block_device_get_request_size
    - ca_sync_seek_offset
    - udev_monitor_get_fd
    - path_startswith
    - assert
    - ca_block_device_put_data
    - udev_device_new_from_devnum
    - symlink
    - udev_monitor_unref
    - ca_strip_file_url
    - ca_locator_has_suffix
    - realloc_buffer_data
    - ca_sync_set_index_fd
    - ca_sync_set_store_auto
    - ca_sync_step
    - udev_device_unref
    - strjoin
    - ca_block_device_open
    - ca_sync_new_decode
    - ca_sync_set_base_mode
    - ca_sync_set_log_level
    - udev_device_get_is_initialized
    - udev_monitor_receive_device
    - ca_block_device_get_poll_fd
    - udev_device_get_devnum
    - streq
    - realloc_buffer_size
    - ca_block_device_set_path
    - ppoll
    - send_notify
    - ca_block_device_step
    - ca_block_device_new
    - udev_new
    - udev_monitor_new_from_netlink
    - realloc_buffer_advance
    - log_error
    linkageType: ''
    returnType: int
    signature: int verb_mkdev(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:3358,1
    - Dst: ca_store_unref
      Src: /src/casync/src/casync-tool.c:3361,1
    - Dst: free
      Src: /src/casync/src/casync-tool.c:3362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - stores
    - n_stores
    argTypes:
    - CaStore**
    - size_t
    assertStmts:
    - condition: (stores || n_stores == 0)
      pos:
        line_end: 3357
        line_start: 3357
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 3363
      start: 3355
    functionDepth: 3
    functionLinenumber: 3355
    functionLinenumberEnd: 3363
    functionName: free_stores
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - assert
    - ca_store_unref
    - free
    linkageType: ''
    returnType: void
    signature: void free_stores(CaStore **stores, size_t n_stores)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free_stores
      Src: /src/casync/src/casync-tool.c:3371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stores_cleanup
    argTypes:
    - CaStoresCleanup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3372
      start: 3370
    functionDepth: 4
    functionLinenumber: 3370
    functionLinenumberEnd: 3372
    functionName: free_storesp
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - free_stores
    linkageType: ''
    returnType: void
    signature: void free_storesp(CaStoresCleanup *stores_cleanup)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:3381,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:3386,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:3387,1
    - Dst: new0
      Src: /src/casync/src/casync-tool.c:3392,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3394,1
    - Dst: ca_store_new
      Src: /src/casync/src/casync-tool.c:3398,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3400,1
    - Dst: ca_store_set_path
      Src: /src/casync/src/casync-tool.c:3403,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3405,1
    - Dst: ca_store_new
      Src: /src/casync/src/casync-tool.c:3409,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3411,1
    - Dst: ca_store_set_path
      Src: /src/casync/src/casync-tool.c:3414,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3416,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 5
    argNames:
    - wstore_path
    - rstore_paths
    - n_rstores
    - ret
    - ret_n
    argTypes:
    - char*
    - char**
    - size_t
    - CaStore***
    - size_t*
    assertStmts:
    - condition: (ret)
      pos:
        line_end: 3385
        line_start: 3385
        source_file: /src/casync/src/casync-tool.c
    - condition: (ret_n)
      pos:
        line_end: 3386
        line_start: 3386
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 3424
      start: 3374
    functionDepth: 4
    functionLinenumber: 3374
    functionLinenumberEnd: 3424
    functionName: allocate_stores
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - ca_store_new
    - log_oom
    - log_error_errno
    - new0
    - assert
    - ca_store_set_path
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: "int allocate_stores(\n                const char *wstore_path,\n                char
      **rstore_paths,\n                size_t n_rstores,\n                CaStore
      ***ret,\n                size_t *ret_n)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ca_store_new
      Src: /src/casync/src/casync-tool.c:3409,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3411,1
    - Dst: ca_store_set_path
      Src: /src/casync/src/casync-tool.c:3414,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3417
      start: 3408
    functionDepth: 4
    functionLinenumber: 3408
    functionLinenumberEnd: 3417
    functionName: STRV_FOREACH
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 2
    functionsReached:
    - ca_store_set_path
    - log_oom
    - ca_store_new
    - log_error_errno
    linkageType: ''
    returnType: void
    signature: void STRV_FOREACH(rstore_path, rstore_paths)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:3429,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:3430,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3434,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-tool.c:3438,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-tool.c:3439,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-tool.c:3440,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-tool.c:3441,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3446,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3451,1
    - Dst: ca_remote_new
      Src: /src/casync/src/casync-tool.c:3457,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3459,1
    - Dst: ca_remote_set_local_feature_flags
      Src: /src/casync/src/casync-tool.c:3461,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3466,1
    - Dst: ca_remote_set_log_level
      Src: /src/casync/src/casync-tool.c:3469,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3471,1
    - Dst: ca_remote_set_rate_limit_bps
      Src: /src/casync/src/casync-tool.c:3475,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3477,1
    - Dst: ca_remote_set_io_fds
      Src: /src/casync/src/casync-tool.c:3480,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3482,1
    - Dst: ca_remote_set_index_path
      Src: /src/casync/src/casync-tool.c:3485,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3487,1
    - Dst: ca_remote_set_archive_path
      Src: /src/casync/src/casync-tool.c:3491,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3493,1
    - Dst: allocate_stores
      Src: /src/casync/src/casync-tool.c:3496,1
    - Dst: log_info
      Src: /src/casync/src/casync-tool.c:3506,1
    - Dst: ca_remote_step
      Src: /src/casync/src/casync-tool.c:3510,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3514,1
    - Dst: ca_remote_can_put_chunk
      Src: /src/casync/src/casync-tool.c:3524,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3526,1
    - Dst: ca_remote_next_request
      Src: /src/casync/src/casync-tool.c:3530,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3534,1
    - Dst: ca_store_get
      Src: /src/casync/src/casync-tool.c:3537,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3543,1
    - Dst: ca_remote_put_chunk
      Src: /src/casync/src/casync-tool.c:3547,1
    - Dst: ca_remote_put_missing
      Src: /src/casync/src/casync-tool.c:3549,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3551,1
    - Dst: block_exit_handler
      Src: /src/casync/src/casync-tool.c:3562,1
    - Dst: ca_remote_poll
      Src: /src/casync/src/casync-tool.c:3567,1
    - Dst: block_exit_handler
      Src: /src/casync/src/casync-tool.c:3572,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3575,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3577,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 108
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3581
      start: 3426
    functionDepth: 9
    functionLinenumber: 3426
    functionLinenumberEnd: 3581
    functionName: verb_pull
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - ca_remote_can_put_chunk
    - ca_remote_next_request
    - log_error_errno
    - allocate_stores
    - empty_or_dash_to_null
    - ca_remote_put_missing
    - _cleanup_
    - block_exit_handler
    - log_oom
    - log_error
    - ca_remote_set_local_feature_flags
    - log_info
    - ca_remote_set_io_fds
    - ca_remote_set_index_path
    - ca_store_get
    - ca_remote_set_log_level
    - ca_remote_step
    - ca_remote_poll
    - ca_remote_new
    - ca_remote_set_archive_path
    - ca_remote_set_rate_limit_bps
    - ca_remote_put_chunk
    linkageType: ''
    returnType: int
    signature: int verb_pull(int argc, char *argv[])
  - BBCount: 60
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:3587,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:3588,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:3589,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3593,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-tool.c:3597,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-tool.c:3598,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-tool.c:3599,1
    - Dst: empty_or_dash_to_null
      Src: /src/casync/src/casync-tool.c:3600,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3605,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3610,1
    - Dst: ca_remote_new
      Src: /src/casync/src/casync-tool.c:3616,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3618,1
    - Dst: ca_remote_set_local_feature_flags
      Src: /src/casync/src/casync-tool.c:3620,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3625,1
    - Dst: ca_remote_set_log_level
      Src: /src/casync/src/casync-tool.c:3628,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3630,1
    - Dst: ca_remote_set_rate_limit_bps
      Src: /src/casync/src/casync-tool.c:3634,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3636,1
    - Dst: ca_remote_set_io_fds
      Src: /src/casync/src/casync-tool.c:3639,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3641,1
    - Dst: ca_index_new_incremental_read
      Src: /src/casync/src/casync-tool.c:3644,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3646,1
    - Dst: ca_index_set_path
      Src: /src/casync/src/casync-tool.c:3648,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3650,1
    - Dst: ca_index_open
      Src: /src/casync/src/casync-tool.c:3652,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3654,1
    - Dst: ca_remote_set_archive_path
      Src: /src/casync/src/casync-tool.c:3658,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3660,1
    - Dst: allocate_stores
      Src: /src/casync/src/casync-tool.c:3663,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3672,1
    - Dst: ca_remote_step
      Src: /src/casync/src/casync-tool.c:3676,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3678,1
    - Dst: block_exit_handler
      Src: /src/casync/src/casync-tool.c:3688,1
    - Dst: ca_remote_poll
      Src: /src/casync/src/casync-tool.c:3693,1
    - Dst: block_exit_handler
      Src: /src/casync/src/casync-tool.c:3698,1
    - Dst: log_info_errno
      Src: /src/casync/src/casync-tool.c:3701,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3703,1
    - Dst: ca_remote_read_index
      Src: /src/casync/src/casync-tool.c:3720,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3722,1
    - Dst: ca_index_incremental_write
      Src: /src/casync/src/casync-tool.c:3724,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3726,1
    - Dst: ca_index_incremental_eof
      Src: /src/casync/src/casync-tool.c:3732,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3734,1
    - Dst: ca_remote_next_chunk
      Src: /src/casync/src/casync-tool.c:3745,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3747,1
    - Dst: ca_store_put
      Src: /src/casync/src/casync-tool.c:3749,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3751,1
    - Dst: ca_remote_forget_chunk
      Src: /src/casync/src/casync-tool.c:3753,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3755,1
    - Dst: assert
      Src: /src/casync/src/casync-tool.c:3761,1
    - Dst: ca_remote_get_remote_feature_flags
      Src: /src/casync/src/casync-tool.c:3778,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3782,1
    - Dst: ca_index_read_chunk
      Src: /src/casync/src/casync-tool.c:3790,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3794,1
    - Dst: ca_store_has
      Src: /src/casync/src/casync-tool.c:3804,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3806,1
    - Dst: ca_remote_request_async
      Src: /src/casync/src/casync-tool.c:3817,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3819,1
    - Dst: ca_remote_has_chunks
      Src: /src/casync/src/casync-tool.c:3836,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3838,1
    - Dst: ca_remote_goodbye
      Src: /src/casync/src/casync-tool.c:3843,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3845,1
    - Dst: ca_index_install
      Src: /src/casync/src/casync-tool.c:3850,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3852,1
    CyclomaticComplexity: 83
    EdgeCount: 83
    ICount: 183
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (false)
      pos:
        line_end: 3760
        line_start: 3760
        source_file: /src/casync/src/casync-tool.c
    constantsTouched: []
    func_position:
      end: 3856
      start: 3583
    functionDepth: 9
    functionLinenumber: 3583
    functionLinenumberEnd: 3856
    functionName: verb_push
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - ca_remote_read_index
    - log_error_errno
    - ca_index_read_chunk
    - ca_index_new_incremental_read
    - ca_store_put
    - allocate_stores
    - ca_store_has
    - empty_or_dash_to_null
    - ca_index_install
    - _cleanup_
    - ca_index_set_path
    - block_exit_handler
    - ca_remote_get_remote_feature_flags
    - log_oom
    - ca_remote_next_chunk
    - ca_remote_set_local_feature_flags
    - ca_remote_request_async
    - assert
    - ca_remote_set_io_fds
    - ca_remote_has_chunks
    - ca_remote_goodbye
    - ca_index_incremental_eof
    - ca_remote_set_log_level
    - ca_remote_step
    - ca_remote_poll
    - ca_index_incremental_write
    - ca_index_open
    - log_info_errno
    - ca_remote_forget_chunk
    - ca_remote_new
    - ca_remote_set_archive_path
    - ca_remote_set_rate_limit_bps
    - log_error
    linkageType: ''
    returnType: int
    signature: int verb_push(int argc, char *argv[])
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:3862,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3866,1
    - Dst: path_startswith
      Src: /src/casync/src/casync-tool.c:3870,1
    - Dst: filename_is_valid
      Src: /src/casync/src/casync-tool.c:3871,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3872,1
    - Dst: strjoina
      Src: /src/casync/src/casync-tool.c:3876,1
    - Dst: open
      Src: /src/casync/src/casync-tool.c:3877,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3882,1
    - Dst: flock
      Src: /src/casync/src/casync-tool.c:3885,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3888,1
    - Dst: safe_close
      Src: /src/casync/src/casync-tool.c:3894,1
    - Dst: read
      Src: /src/casync/src/casync-tool.c:3898,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3900,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3902,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3906,1
    - Dst: filename_is_valid
      Src: /src/casync/src/casync-tool.c:3911,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3912,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:3916,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3918
      start: 3858
    functionDepth: 4
    functionLinenumber: 3858
    functionLinenumberEnd: 3918
    functionName: verb_udev
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - open
    - strjoina
    - safe_close
    - filename_is_valid
    - log_error_errno
    - _cleanup_
    - flock
    - printf
    - path_startswith
    - read
    - log_error
    linkageType: ''
    returnType: int
    signature: int verb_udev(int argc, char *argv[])
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:3922,1
    - Dst: _cleanup_
      Src: /src/casync/src/casync-tool.c:3923,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3926,1
    - Dst: ca_chunk_collection_new
      Src: /src/casync/src/casync-tool.c:3930,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3932,1
    - Dst: set_default_store
      Src: /src/casync/src/casync-tool.c:3935,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3940,1
    - Dst: ca_store_new
      Src: /src/casync/src/casync-tool.c:3944,1
    - Dst: log_oom
      Src: /src/casync/src/casync-tool.c:3946,1
    - Dst: ca_store_set_path
      Src: /src/casync/src/casync-tool.c:3948,1
    - Dst: fprintf
      Src: /src/casync/src/casync-tool.c:3950,1
    - Dst: strerror
      Src: /src/casync/src/casync-tool.c:3950,1
    - Dst: ca_chunk_collection_add_index
      Src: /src/casync/src/casync-tool.c:3957,1
    - Dst: assert_se
      Src: /src/casync/src/casync-tool.c:3965,1
    - Dst: ca_chunk_collection_usage
      Src: /src/casync/src/casync-tool.c:3965,1
    - Dst: assert_se
      Src: /src/casync/src/casync-tool.c:3966,1
    - Dst: ca_chunk_collection_size
      Src: /src/casync/src/casync-tool.c:3966,1
    - Dst: printf
      Src: /src/casync/src/casync-tool.c:3968,1
    - Dst: ca_gc_cleanup_unused
      Src: /src/casync/src/casync-tool.c:3971,1
    - Dst: log_error_errno
      Src: /src/casync/src/casync-tool.c:3975,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3978
      start: 3920
    functionDepth: 5
    functionLinenumber: 3920
    functionLinenumberEnd: 3978
    functionName: verb_gc
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - ca_chunk_collection_new
    - ca_store_new
    - fprintf
    - log_oom
    - ca_chunk_collection_usage
    - _cleanup_
    - log_error_errno
    - ca_gc_cleanup_unused
    - printf
    - set_default_store
    - strerror
    - assert_se
    - ca_chunk_collection_size
    - ca_chunk_collection_add_index
    - ca_store_set_path
    - log_error
    linkageType: ''
    returnType: int
    signature: int verb_gc(int argc, char *argv[])
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:3985,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:3989,1
    - Dst: help
      Src: /src/casync/src/casync-tool.c:3990,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:3992,1
    - Dst: verb_make
      Src: /src/casync/src/casync-tool.c:3993,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:3994,1
    - Dst: verb_extract
      Src: /src/casync/src/casync-tool.c:3995,1
    - Dst: STR_IN_SET
      Src: /src/casync/src/casync-tool.c:3996,1
    - Dst: verb_list
      Src: /src/casync/src/casync-tool.c:3997,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:3998,1
    - Dst: verb_digest
      Src: /src/casync/src/casync-tool.c:3999,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:4000,1
    - Dst: verb_mkdev
      Src: /src/casync/src/casync-tool.c:4001,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:4002,1
    - Dst: verb_mount
      Src: /src/casync/src/casync-tool.c:4003,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:4004,1
    - Dst: verb_pull
      Src: /src/casync/src/casync-tool.c:4005,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:4006,1
    - Dst: verb_push
      Src: /src/casync/src/casync-tool.c:4007,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:4008,1
    - Dst: verb_udev
      Src: /src/casync/src/casync-tool.c:4009,1
    - Dst: streq
      Src: /src/casync/src/casync-tool.c:4010,1
    - Dst: verb_gc
      Src: /src/casync/src/casync-tool.c:4011,1
    - Dst: log_error
      Src: /src/casync/src/casync-tool.c:4013,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4018
      start: 3981
    functionDepth: 13
    functionLinenumber: 3981
    functionLinenumberEnd: 4018
    functionName: dispatch_verb
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - verb_mount
    - verb_pull
    - STR_IN_SET
    - verb_extract
    - verb_digest
    - verb_push
    - verb_make
    - verb_gc
    - verb_udev
    - streq
    - help
    - verb_list
    - verb_mkdev
    - log_error
    linkageType: ''
    returnType: int
    signature: int dispatch_verb(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: disable_sigpipe
      Src: /src/casync/src/casync-tool.c:4023,1
    - Dst: parse_argv
      Src: /src/casync/src/casync-tool.c:4025,1
    - Dst: install_exit_handler
      Src: /src/casync/src/casync-tool.c:4029,1
    - Dst: block_exit_handler
      Src: /src/casync/src/casync-tool.c:4030,1
    - Dst: dispatch_verb
      Src: /src/casync/src/casync-tool.c:4032,1
    - Dst: install_exit_handler
      Src: /src/casync/src/casync-tool.c:4033,1
    - Dst: free
      Src: /src/casync/src/casync-tool.c:4036,1
    - Dst: free
      Src: /src/casync/src/casync-tool.c:4037,1
    - Dst: strv_free
      Src: /src/casync/src/casync-tool.c:4038,1
    - Dst: strv_free
      Src: /src/casync/src/casync-tool.c:4039,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4044
      start: 4020
    functionDepth: 14
    functionLinenumber: 4020
    functionLinenumberEnd: 4044
    functionName: main
    functionSourceFile: /src/casync/src/casync-tool.c
    functionUses: 0
    functionsReached:
    - block_exit_handler
    - strv_free
    - dispatch_verb
    - install_exit_handler
    - parse_argv
    - disable_sigpipe
    - free
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DECIMAL_STR_MAX
      Src: /src/casync/src/reflink.c:18,1
    - Dst: pread
      Src: /src/casync/src/reflink.c:22,1
    - Dst: sprintf
      Src: /src/casync/src/reflink.c:28,1
    - Dst: open
      Src: /src/casync/src/reflink.c:30,1
    - Dst: pread
      Src: /src/casync/src/reflink.c:36,1
    - Dst: safe_close
      Src: /src/casync/src/reflink.c:37,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - fd
    - p
    - s
    - o
    argTypes:
    - int
    - void*
    - size_t
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 17
    functionDepth: 3
    functionLinenumber: 17
    functionLinenumberEnd: 44
    functionName: pread_try_harder
    functionSourceFile: /src/casync/src/reflink.c
    functionUses: 0
    functionsReached:
    - DECIMAL_STR_MAX
    - safe_close
    - pread
    - sprintf
    - open
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t pread_try_harder(int fd, void *p, size_t s, off_t o)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_se::assert_se
      Src: /src/casync/src/reflink.c:52,1
    - Dst: assert_se::assert_se
      Src: /src/casync/src/reflink.c:54,1
    - Dst: pread_try_harder
      Src: /src/casync/src/reflink.c:57,1
    - Dst: pread_try_harder
      Src: /src/casync/src/reflink.c:58,1
    - Dst: assert_se
      Src: /src/casync/src/reflink.c:60,1
    - Dst: assert_se
      Src: /src/casync/src/reflink.c:61,1
    - Dst: assert_se
      Src: /src/casync/src/reflink.c:62,1
    - Dst: memcmp
      Src: /src/casync/src/reflink.c:62,1
    - Dst: free
      Src: /src/casync/src/reflink.c:64,1
    - Dst: free
      Src: /src/casync/src/reflink.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - source_fd
    - source_offset
    - destination_fd
    - destination_offset
    - size
    argTypes:
    - int
    - uint64_t
    - int
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 47
    functionDepth: 4
    functionLinenumber: 47
    functionLinenumberEnd: 67
    functionName: validate
    functionSourceFile: /src/casync/src/reflink.c
    functionUses: 1
    functionsReached:
    - pread_try_harder
    - memcmp
    - assert_se
    - assert_se::assert_se
    - free
    linkageType: ''
    returnType: void
    signature: void validate(int source_fd, uint64_t source_offset, int destination_fd,
      uint64_t destination_offset, uint64_t size)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/casync/src/reflink.c:109,1
    - Dst: fstat
      Src: /src/casync/src/reflink.c:111,1
    - Dst: S_ISDIR
      Src: /src/casync/src/reflink.c:116,1
    - Dst: S_ISDIR
      Src: /src/casync/src/reflink.c:116,1
    - Dst: S_ISREG
      Src: /src/casync/src/reflink.c:118,1
    - Dst: S_ISREG
      Src: /src/casync/src/reflink.c:118,1
    - Dst: validate
      Src: /src/casync/src/reflink.c:135,1
    - Dst: ioctl
      Src: /src/casync/src/reflink.c:137,1
    - Dst: validate
      Src: /src/casync/src/reflink.c:146,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 43
    argCount: 6
    argNames:
    - source_fd
    - source_offset
    - destination_fd
    - destination_offset
    - size
    - ret_reflinked
    argTypes:
    - int
    - uint64_t
    - int
    - uint64_t
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 152
    functionName: reflink_fd
    functionSourceFile: /src/casync/src/reflink.c
    functionUses: 1
    functionsReached:
    - fstat
    - S_ISREG
    - S_ISDIR
    - ioctl
    - validate
    linkageType: ''
    returnType: int
    signature: "int reflink_fd(\n                int source_fd,\n                uint64_t
      source_offset,\n                int destination_fd,\n                uint64_t
      destination_offset,\n                uint64_t size,\n                uint64_t
      *ret_reflinked)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/src/signal-handler.c:11,1
    - Dst: sigemptyset
      Src: /src/casync/src/signal-handler.c:11,1
    - Dst: assert_se
      Src: /src/casync/src/signal-handler.c:12,1
    - Dst: sigaddset
      Src: /src/casync/src/signal-handler.c:12,1
    - Dst: assert_se
      Src: /src/casync/src/signal-handler.c:13,1
    - Dst: sigdelset
      Src: /src/casync/src/signal-handler.c:13,1
    - Dst: assert_se
      Src: /src/casync/src/signal-handler.c:14,1
    - Dst: sigaddset
      Src: /src/casync/src/signal-handler.c:14,1
    - Dst: assert_se
      Src: /src/casync/src/signal-handler.c:15,1
    - Dst: sigprocmask
      Src: /src/casync/src/signal-handler.c:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - how
    - old
    argTypes:
    - int
    - sigset_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 16
    functionName: block_exit_handler
    functionSourceFile: /src/casync/src/signal-handler.c
    functionUses: 4
    functionsReached:
    - sigprocmask
    - sigdelset
    - assert_se
    - sigemptyset
    - sigaddset
    linkageType: ''
    returnType: void
    signature: void block_exit_handler(int how, sigset_t *old)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: exit_signal_handler
    functionSourceFile: /src/casync/src/signal-handler.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void exit_signal_handler(int signo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/src/signal-handler.c:27,1
    - Dst: sigaction
      Src: /src/casync/src/signal-handler.c:27,1
    - Dst: assert_se
      Src: /src/casync/src/signal-handler.c:28,1
    - Dst: sigaction
      Src: /src/casync/src/signal-handler.c:28,1
    - Dst: assert_se
      Src: /src/casync/src/signal-handler.c:29,1
    - Dst: sigaction
      Src: /src/casync/src/signal-handler.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 30
    functionName: install_exit_handler
    functionSourceFile: /src/casync/src/signal-handler.c
    functionUses: 2
    functionsReached:
    - sigaction
    - assert_se
    linkageType: ''
    returnType: void
    signature: void install_exit_handler(void (*handler)(int))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: block_exit_handler
      Src: /src/casync/src/signal-handler.c:37,1
    - Dst: ca_sync_poll
      Src: /src/casync/src/signal-handler.c:43,1
    - Dst: block_exit_handler
      Src: /src/casync/src/signal-handler.c:49,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - CaSync*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 32
    functionDepth: 3
    functionLinenumber: 32
    functionLinenumberEnd: 52
    functionName: sync_poll_sigset
    functionSourceFile: /src/casync/src/signal-handler.c
    functionUses: 6
    functionsReached:
    - ca_sync_poll
    - block_exit_handler
    linkageType: ''
    returnType: int
    signature: int sync_poll_sigset(CaSync *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_se
      Src: /src/casync/src/signal-handler.c:60,1
    - Dst: sigaction
      Src: /src/casync/src/signal-handler.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: disable_sigpipe
    functionSourceFile: /src/casync/src/signal-handler.c
    functionUses: 1
    functionsReached:
    - sigaction
    - assert_se
    linkageType: ''
    returnType: void
    signature: void disable_sigpipe(void)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cachunker.c:17,1
    - Dst: lrint
      Src: /src/casync/src/cachunker.c:24,1
    - Dst: pow
      Src: /src/casync/src/cachunker.c:24,1
    - Dst: log2
      Src: /src/casync/src/cachunker.c:24,1
    - Dst: log2
      Src: /src/casync/src/cachunker.c:24,1
    - Dst: assert
      Src: /src/casync/src/cachunker.c:66,1
    - Dst: assert
      Src: /src/casync/src/cachunker.c:67,1
    - Dst: assert
      Src: /src/casync/src/cachunker.c:68,1
    - Dst: assert
      Src: /src/casync/src/cachunker.c:69,1
    - Dst: CA_CHUNKER_DISCRIMINATOR_FROM_AVG
      Src: /src/casync/src/cachunker.c:73,1
    - Dst: log_debug
      Src: /src/casync/src/cachunker.c:85,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 4
    argNames:
    - c
    - min_size
    - avg_size
    - max_size
    argTypes:
    - CaChunker*
    - size_t
    - size_t
    - size_t
    assertStmts:
    - condition: (c)
      pos:
        line_end: 16
        line_start: 16
        source_file: /src/casync/src/cachunker.c
    - condition: (CA_CHUNK_SIZE_LIMIT_MIN <= min_size)
      pos:
        line_end: 65
        line_start: 65
        source_file: /src/casync/src/cachunker.c
    - condition: (min_size <= avg_size)
      pos:
        line_end: 66
        line_start: 66
        source_file: /src/casync/src/cachunker.c
    - condition: (avg_size <= max_size)
      pos:
        line_end: 67
        line_start: 67
        source_file: /src/casync/src/cachunker.c
    - condition: (max_size <= CA_CHUNK_SIZE_LIMIT_MAX)
      pos:
        line_end: 68
        line_start: 68
        source_file: /src/casync/src/cachunker.c
    constantsTouched: []
    func_position:
      end: 89
      start: 9
    functionDepth: 1
    functionLinenumber: 9
    functionLinenumberEnd: 89
    functionName: ca_chunker_set_size
    functionSourceFile: /src/casync/src/cachunker.c
    functionUses: 6
    functionsReached:
    - pow
    - log_debug
    - log2
    - lrint
    - assert
    - CA_CHUNKER_DISCRIMINATOR_FROM_AVG
    linkageType: ''
    returnType: int
    signature: "int ca_chunker_set_size(\n                CaChunker *c,\n                size_t
      min_size,\n                size_t avg_size,\n                size_t max_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cachunker.c:162,1
    - Dst: assert
      Src: /src/casync/src/cachunker.c:164,1
    - Dst: assert
      Src: /src/casync/src/cachunker.c:165,1
    - Dst: assert
      Src: /src/casync/src/cachunker.c:166,1
    - Dst: assert
      Src: /src/casync/src/cachunker.c:167,1
    - Dst: rol32
      Src: /src/casync/src/cachunker.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - c
    - p
    - n
    argTypes:
    - CaChunker*
    - void*
    - size_t
    assertStmts:
    - condition: (c)
      pos:
        line_end: 161
        line_start: 161
        source_file: /src/casync/src/cachunker.c
    - condition: (c->chunk_size_min <= c->chunk_size_avg)
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/casync/src/cachunker.c
    - condition: (c->chunk_size_max <= CA_CHUNK_SIZE_LIMIT_MAX)
      pos:
        line_end: 166
        line_start: 166
        source_file: /src/casync/src/cachunker.c
    - condition: (CA_CHUNK_SIZE_LIMIT_MIN <= c->chunk_size_min)
      pos:
        line_end: 163
        line_start: 163
        source_file: /src/casync/src/cachunker.c
    - condition: (c->chunk_size_avg <= c->chunk_size_max)
      pos:
        line_end: 165
        line_start: 165
        source_file: /src/casync/src/cachunker.c
    constantsTouched: []
    func_position:
      end: 177
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 177
    functionName: ca_chunker_start
    functionSourceFile: /src/casync/src/cachunker.c
    functionUses: 1
    functionsReached:
    - assert
    - rol32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t ca_chunker_start(CaChunker *c, const void *p, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rol32
      Src: /src/casync/src/cachunker.c:181,1
    - Dst: rol32
      Src: /src/casync/src/cachunker.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - c
    - leave
    - enter
    argTypes:
    - CaChunker*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 186
    functionName: ca_chunker_roll
    functionSourceFile: /src/casync/src/cachunker.c
    functionUses: 1
    functionsReached:
    - rol32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t ca_chunker_roll(CaChunker *c, uint8_t leave, uint8_t enter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cachunker.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - c
    - v
    argTypes:
    - CaChunker*
    - uint32_t
    assertStmts:
    - condition: (c)
      pos:
        line_end: 188
        line_start: 188
        source_file: /src/casync/src/cachunker.c
    constantsTouched: []
    func_position:
      end: 195
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 195
    functionName: shall_break
    functionSourceFile: /src/casync/src/cachunker.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool shall_break(CaChunker *c, uint32_t v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - CaChunker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: CA_CHUNKER_IS_FIXED_SIZE
    functionSourceFile: /src/casync/src/cachunker.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool CA_CHUNKER_IS_FIXED_SIZE(CaChunker *c)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cachunker.c:207,1
    - Dst: assert
      Src: /src/casync/src/cachunker.c:208,1
    - Dst: CA_CHUNKER_IS_FIXED_SIZE
      Src: /src/casync/src/cachunker.c:210,1
    - Dst: assert
      Src: /src/casync/src/cachunker.c:215,1
    - Dst: MIN
      Src: /src/casync/src/cachunker.c:216,1
    - Dst: MIN
      Src: /src/casync/src/cachunker.c:247,1
    - Dst: memcpy
      Src: /src/casync/src/cachunker.c:249,1
    - Dst: ca_chunker_start
      Src: /src/casync/src/cachunker.c:260,1
    - Dst: shall_break
      Src: /src/casync/src/cachunker.c:263,1
    - Dst: ca_chunker_roll
      Src: /src/casync/src/cachunker.c:270,1
    - Dst: shall_break
      Src: /src/casync/src/cachunker.c:274,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 59
    argCount: 3
    argNames:
    - c
    - p
    - n
    argTypes:
    - CaChunker*
    - void*
    - size_t
    assertStmts:
    - condition: (c)
      pos:
        line_end: 206
        line_start: 206
        source_file: /src/casync/src/cachunker.c
    - condition: (c->chunk_size < fixed_size)
      pos:
        line_end: 214
        line_start: 214
        source_file: /src/casync/src/cachunker.c
    - condition: (p)
      pos:
        line_end: 207
        line_start: 207
        source_file: /src/casync/src/cachunker.c
    constantsTouched: []
    func_position:
      end: 292
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 292
    functionName: ca_chunker_scan
    functionSourceFile: /src/casync/src/cachunker.c
    functionUses: 4
    functionsReached:
    - shall_break
    - memcpy
    - ca_chunker_start
    - ca_chunker_roll
    - CA_CHUNKER_IS_FIXED_SIZE
    - assert
    - MIN
    linkageType: ''
    returnType: size_t
    signature: size_t ca_chunker_scan(CaChunker *c, const void* p, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 13
    functionName: encode_char
    functionSourceFile: /src/casync/src/cachunkid.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char encode_char(uint8_t x)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - x
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 22
    functionName: decode_char
    functionSourceFile: /src/casync/src/cachunkid.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int decode_char(char x)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cachunkid.c:28,1
    - Dst: assert
      Src: /src/casync/src/cachunkid.c:29,1
    - Dst: decode_char
      Src: /src/casync/src/cachunkid.c:34,1
    - Dst: decode_char
      Src: /src/casync/src/cachunkid.c:37,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - v
    - ret
    argTypes:
    - char*
    - CaChunkID*
    assertStmts:
    - condition: (v)
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/casync/src/cachunkid.c
    - condition: (ret)
      pos:
        line_end: 28
        line_start: 28
        source_file: /src/casync/src/cachunkid.c
    constantsTouched: []
    func_position:
      end: 49
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 49
    functionName: ca_chunk_id_parse
    functionSourceFile: /src/casync/src/cachunkid.c
    functionUses: 3
    functionsReached:
    - assert
    - decode_char
    linkageType: ''
    returnType: CaChunkID
    signature: CaChunkID * ca_chunk_id_parse(const char *v, CaChunkID *ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cachunkid.c:54,1
    - Dst: assert
      Src: /src/casync/src/cachunkid.c:55,1
    - Dst: encode_char
      Src: /src/casync/src/cachunkid.c:58,1
    - Dst: encode_char
      Src: /src/casync/src/cachunkid.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - id
    - v
    argTypes:
    - CaChunkID*
    - char[]
    assertStmts:
    - condition: (id)
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/casync/src/cachunkid.c
    - condition: (v)
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/casync/src/cachunkid.c
    constantsTouched: []
    func_position:
      end: 64
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 64
    functionName: ca_chunk_id_format
    functionSourceFile: /src/casync/src/cachunkid.c
    functionUses: 15
    functionsReached:
    - assert
    - encode_char
    linkageType: ''
    returnType: char
    signature: char * ca_chunk_id_format(const CaChunkID *id, char v[CA_CHUNK_ID_FORMAT_MAX])
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_get_size
      Src: /src/casync/src/cachunkid.c:78,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/cachunkid.c:81,1
    - Dst: ca_digest_write
      Src: /src/casync/src/cachunkid.c:82,1
    - Dst: memcpy
      Src: /src/casync/src/cachunkid.c:84,1
    - Dst: ca_digest_read
      Src: /src/casync/src/cachunkid.c:84,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - digest
    - p
    - l
    - ret
    argTypes:
    - CaDigest*
    - void*
    - size_t
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 86
    functionName: ca_chunk_id_make
    functionSourceFile: /src/casync/src/cachunkid.c
    functionUses: 4
    functionsReached:
    - ca_digest_get_size
    - ca_digest_write
    - memcpy
    - ca_digest_read
    - ca_digest_reset
    linkageType: ''
    returnType: int
    signature: int ca_chunk_id_make(CaDigest *digest, const void *p, size_t l, CaChunkID
      *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/cachunkid.c:96,1
    - Dst: assert
      Src: /src/casync/src/cachunkid.c:97,1
    - Dst: strlen
      Src: /src/casync/src/cachunkid.c:100,1
    - Dst: memcpy
      Src: /src/casync/src/cachunkid.c:101,1
    - Dst: ca_chunk_id_format
      Src: /src/casync/src/cachunkid.c:105,1
    - Dst: memcpy
      Src: /src/casync/src/cachunkid.c:106,1
    - Dst: strcpy
      Src: /src/casync/src/cachunkid.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - prefix
    - chunkid
    - suffix
    - buffer
    argTypes:
    - char*
    - CaChunkID*
    - char*
    - char[]
    assertStmts:
    - condition: (chunkid)
      pos:
        line_end: 95
        line_start: 95
        source_file: /src/casync/src/cachunkid.c
    - condition: (buffer)
      pos:
        line_end: 96
        line_start: 96
        source_file: /src/casync/src/cachunkid.c
    constantsTouched: []
    func_position:
      end: 113
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 113
    functionName: ca_chunk_id_format_path
    functionSourceFile: /src/casync/src/cachunkid.c
    functionUses: 8
    functionsReached:
    - memcpy
    - strlen
    - ca_chunk_id_format
    - strcpy
    - assert
    linkageType: ''
    returnType: char
    signature: "char * ca_chunk_id_format_path(\n                const char *prefix,\n
      \               const CaChunkID *chunkid,\n                const char *suffix,\n
      \               char buffer[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ops
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: set_new
    functionSourceFile: /src/casync/src/set.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: set_new(ops)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_free
      Src: /src/casync/src/set.h:31,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - Set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 3
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: set_free
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_free
    linkageType: ''
    returnType: Set
    signature: Set *set_free(Set *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_free_free
      Src: /src/casync/src/set.h:36,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - Set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 3
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: set_free_free
    functionSourceFile: /src/casync/src/set.h
    functionUses: 1
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_free_free
    linkageType: ''
    returnType: Set
    signature: Set *set_free_free(Set *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_copy
      Src: /src/casync/src/set.h:43,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - Set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: set_copy
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_copy
    linkageType: ''
    returnType: Set
    signature: Set *set_copy(Set *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - h
    - ','
    - ops
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: set_ensure_allocated
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: set_ensure_allocated(h, ops)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_get
      Src: /src/casync/src/set.h:53,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - key
    argTypes:
    - Set*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: set_get
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_get
    linkageType: ''
    returnType: void
    signature: void *set_get(Set *s, void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_contains
      Src: /src/casync/src/set.h:58,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - key
    argTypes:
    - Set*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: set_contains
    functionSourceFile: /src/casync/src/set.h
    functionUses: 2
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_contains
    linkageType: ''
    returnType: bool
    signature: bool set_contains(Set *s, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_remove
      Src: /src/casync/src/set.h:62,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - key
    argTypes:
    - Set*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: set_remove
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - internal_hashmap_remove
    - HASHMAP_BASE
    linkageType: ''
    returnType: void
    signature: void *set_remove(Set *s, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_reserve
      Src: /src/casync/src/set.h:72,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - entries_add
    argTypes:
    - Set*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 7
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: set_reserve
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_reserve
    linkageType: ''
    returnType: int
    signature: int set_reserve(Set *h, unsigned entries_add)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_move
      Src: /src/casync/src/set.h:76,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:76,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - other
    argTypes:
    - Set*
    - Set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 7
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: set_move
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_move
    linkageType: ''
    returnType: int
    signature: int set_move(Set *s, Set *other)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_move_one
      Src: /src/casync/src/set.h:80,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:80,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - s
    - other
    - key
    argTypes:
    - Set*
    - Set*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 3
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: set_move_one
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_move_one
    linkageType: ''
    returnType: int
    signature: int set_move_one(Set *s, Set *other, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_size
      Src: /src/casync/src/set.h:84,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - Set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: set_size
    functionSourceFile: /src/casync/src/set.h
    functionUses: 9
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_size
    linkageType: ''
    returnType: unsigned
    signature: unsigned set_size(Set *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_size
      Src: /src/casync/src/set.h:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - Set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 89
    functionName: set_isempty
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - set_size
    linkageType: ''
    returnType: bool
    signature: bool set_isempty(Set *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_buckets
      Src: /src/casync/src/set.h:92,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - Set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: set_buckets
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_buckets
    linkageType: ''
    returnType: unsigned
    signature: unsigned set_buckets(Set *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_clear
      Src: /src/casync/src/set.h:98,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - Set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 97
    functionDepth: 3
    functionLinenumber: 97
    functionLinenumberEnd: 99
    functionName: set_clear
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - internal_hashmap_clear
    - HASHMAP_BASE
    linkageType: ''
    returnType: void
    signature: void set_clear(Set *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_clear_free
      Src: /src/casync/src/set.h:102,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - Set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: set_clear_free
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - internal_hashmap_clear_free
    - HASHMAP_BASE
    linkageType: ''
    returnType: void
    signature: void set_clear_free(Set *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_steal_first
      Src: /src/casync/src/set.h:108,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - Set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 7
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: set_steal_first
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_steal_first
    linkageType: ''
    returnType: void
    signature: void *set_steal_first(Set *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_first
      Src: /src/casync/src/set.h:115,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - Set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 7
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: set_first
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_first
    linkageType: ''
    returnType: void
    signature: void *set_first(Set *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_hashmap_get_strv
      Src: /src/casync/src/set.h:121,1
    - Dst: HASHMAP_BASE
      Src: /src/casync/src/set.h:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 3
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: set_get_strv
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached:
    - HASHMAP_BASE
    - internal_hashmap_get_strv
    linkageType: ''
    returnType: char
    signature: char **set_get_strv(Set *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - e
    - ','
    - s
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 130
    functionName: SET_FOREACH
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_FOREACH(e, s, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - e
    - ','
    - d
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: SET_FOREACH_MOVE
    functionSourceFile: /src/casync/src/set.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_FOREACH_MOVE(e, d, s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UINT64_C
      Src: /src/casync/src/time-util.h:28,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 29
    functionName: timespec_to_nsec
    functionSourceFile: /src/casync/src/time-util.h
    functionUses: 5
    functionsReached:
    - UINT64_C
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t timespec_to_nsec(struct timespec t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UINT64_C
      Src: /src/casync/src/time-util.h:40,1
    - Dst: UINT64_C
      Src: /src/casync/src/time-util.h:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - u
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 43
    functionName: nsec_to_timespec
    functionSourceFile: /src/casync/src/time-util.h
    functionUses: 4
    functionsReached:
    - UINT64_C
    linkageType: ''
    returnType: struct timespec
    signature: struct timespec nsec_to_timespec(uint64_t u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: NSEC_TO_TIMESPEC_INIT
    functionSourceFile: /src/casync/src/time-util.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NSEC_TO_TIMESPEC_INIT(u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/casync/src/time-util.h:52,1
    - Dst: timespec_to_nsec
      Src: /src/casync/src/time-util.h:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - id
    argTypes:
    - clockid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 56
    functionName: now
    functionSourceFile: /src/casync/src/time-util.h
    functionUses: 8
    functionsReached:
    - timespec_to_nsec
    - clock_gettime
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t now(clockid_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - avg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: CA_CHUNKER_DISCRIMINATOR_FROM_AVG
    functionSourceFile: /src/casync/src/cachunker.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CA_CHUNKER_DISCRIMINATOR_FROM_AVG(avg)
  - 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: 7
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 7
    functionName: _printf_
    functionSourceFile: /src/casync/src/gcc-macro.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _printf_(a,b)
  - 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: _likely_
    functionSourceFile: /src/casync/src/gcc-macro.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _likely_(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 12
    functionName: _unlikely_
    functionSourceFile: /src/casync/src/gcc-macro.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _unlikely_(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: _alloc_
    functionSourceFile: /src/casync/src/gcc-macro.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _alloc_(...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/canbd.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 52
    functionName: ca_block_device_new
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaBlockDevice
    signature: CaBlockDevice *ca_block_device_new(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: safe_close_pair
      Src: /src/casync/src/canbd.c:58,1
    - Dst: ioctl
      Src: /src/casync/src/canbd.c:61,1
    - Dst: ioctl
      Src: /src/casync/src/canbd.c:62,1
    - Dst: safe_close
      Src: /src/casync/src/canbd.c:63,1
    - Dst: kill
      Src: /src/casync/src/canbd.c:69,1
    - Dst: waitid
      Src: /src/casync/src/canbd.c:70,1
    - Dst: free
      Src: /src/casync/src/canbd.c:73,1
    - Dst: safe_close
      Src: /src/casync/src/canbd.c:75,1
    - Dst: free
      Src: /src/casync/src/canbd.c:76,1
    - Dst: unlink
      Src: /src/casync/src/canbd.c:79,1
    - Dst: free
      Src: /src/casync/src/canbd.c:80,1
    - Dst: rmdir
      Src: /src/casync/src/canbd.c:81,1
    - Dst: mfree
      Src: /src/casync/src/canbd.c:84,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaBlockDevice*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 54
    functionDepth: 4
    functionLinenumber: 54
    functionLinenumberEnd: 85
    functionName: ca_block_device_unref
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached:
    - mfree
    - safe_close
    - unlink
    - safe_close_pair
    - rmdir
    - ioctl
    - kill
    - waitid
    - free
    linkageType: ''
    returnType: CaBlockDevice
    signature: CaBlockDevice *ca_block_device_unref(CaBlockDevice *d)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - d
    - size
    argTypes:
    - CaBlockDevice*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: ca_block_device_set_size
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_block_device_set_size(CaBlockDevice *d, uint64_t size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isempty
      Src: /src/casync/src/canbd.c:107,1
    - Dst: filename_is_valid
      Src: /src/casync/src/canbd.c:109,1
    - Dst: strlen
      Src: /src/casync/src/canbd.c:111,1
    - Dst: strdup
      Src: /src/casync/src/canbd.c:117,1
    - Dst: free
      Src: /src/casync/src/canbd.c:121,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - d
    - name
    argTypes:
    - CaBlockDevice*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 125
    functionName: ca_block_device_set_friendly_name
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached:
    - filename_is_valid
    - strlen
    - isempty
    - strdup
    - free
    linkageType: ''
    returnType: int
    signature: int ca_block_device_set_friendly_name(CaBlockDevice *d, const char
      *name)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: mkdir
      Src: /src/casync/src/canbd.c:146,1
    - Dst: path_startswith
      Src: /src/casync/src/canbd.c:149,1
    - Dst: filename_is_valid
      Src: /src/casync/src/canbd.c:154,1
    - Dst: free
      Src: /src/casync/src/canbd.c:159,1
    - Dst: strjoin
      Src: /src/casync/src/canbd.c:160,1
    - Dst: asprintf
      Src: /src/casync/src/canbd.c:162,1
    - Dst: random_u64
      Src: /src/casync/src/canbd.c:162,1
    - Dst: open
      Src: /src/casync/src/canbd.c:167,1
    - Dst: flock
      Src: /src/casync/src/canbd.c:179,1
    - Dst: strlen
      Src: /src/casync/src/canbd.c:184,1
    - Dst: writev
      Src: /src/casync/src/canbd.c:185,1
    - Dst: rename_noreplace
      Src: /src/casync/src/canbd.c:200,1
    - Dst: mfree
      Src: /src/casync/src/canbd.c:202,1
    - Dst: open
      Src: /src/casync/src/canbd.c:208,1
    - Dst: flock
      Src: /src/casync/src/canbd.c:217,1
    - Dst: fstat
      Src: /src/casync/src/canbd.c:232,1
    - Dst: S_ISREG
      Src: /src/casync/src/canbd.c:237,1
    - Dst: unlink
      Src: /src/casync/src/canbd.c:244,1
    - Dst: safe_close
      Src: /src/casync/src/canbd.c:250,1
    - Dst: unlink
      Src: /src/casync/src/canbd.c:258,1
    - Dst: free
      Src: /src/casync/src/canbd.c:260,1
    - Dst: safe_close
      Src: /src/casync/src/canbd.c:264,1
    - Dst: mfree
      Src: /src/casync/src/canbd.c:266,1
    - Dst: rmdir
      Src: /src/casync/src/canbd.c:268,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 111
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaBlockDevice*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 127
    functionDepth: 3
    functionLinenumber: 127
    functionLinenumberEnd: 271
    functionName: ca_block_device_establish_friendly_name
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 0
    functionsReached:
    - open
    - writev
    - mfree
    - unlink
    - safe_close
    - filename_is_valid
    - fstat
    - strlen
    - S_ISREG
    - strjoin
    - random_u64
    - mkdir
    - asprintf
    - flock
    - rmdir
    - rename_noreplace
    - path_startswith
    - free
    linkageType: ''
    returnType: int
    signature: int ca_block_device_establish_friendly_name(CaBlockDevice *d)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/canbd.c:289,1
    - Dst: socketpair
      Src: /src/casync/src/canbd.c:292,1
    - Dst: open
      Src: /src/casync/src/canbd.c:298,1
    - Dst: fstat
      Src: /src/casync/src/canbd.c:302,1
    - Dst: S_ISBLK
      Src: /src/casync/src/canbd.c:307,1
    - Dst: ioctl
      Src: /src/casync/src/canbd.c:312,1
    - Dst: asprintf
      Src: /src/casync/src/canbd.c:327,1
    - Dst: open
      Src: /src/casync/src/canbd.c:330,1
    - Dst: free
      Src: /src/casync/src/canbd.c:332,1
    - Dst: fstat
      Src: /src/casync/src/canbd.c:337,1
    - Dst: S_ISBLK
      Src: /src/casync/src/canbd.c:342,1
    - Dst: ioctl
      Src: /src/casync/src/canbd.c:347,1
    - Dst: free
      Src: /src/casync/src/canbd.c:354,1
    - Dst: IN_SET
      Src: /src/casync/src/canbd.c:357,1
    - Dst: safe_close
      Src: /src/casync/src/canbd.c:360,1
    - Dst: ca_block_device_establish_friendly_name
      Src: /src/casync/src/canbd.c:367,1
    - Dst: ioctl
      Src: /src/casync/src/canbd.c:371,1
    - Dst: ioctl
      Src: /src/casync/src/canbd.c:376,1
    - Dst: ioctl
      Src: /src/casync/src/canbd.c:381,1
    - Dst: ioctl
      Src: /src/casync/src/canbd.c:386,1
    - Dst: fork
      Src: /src/casync/src/canbd.c:391,1
    - Dst: prctl
      Src: /src/casync/src/canbd.c:399,1
    - Dst: prctl
      Src: /src/casync/src/canbd.c:400,1
    - Dst: ioctl
      Src: /src/casync/src/canbd.c:402,1
    - Dst: _exit
      Src: /src/casync/src/canbd.c:403,1
    - Dst: _exit
      Src: /src/casync/src/canbd.c:405,1
    - Dst: safe_close
      Src: /src/casync/src/canbd.c:411,1
    - Dst: safe_close_pair
      Src: /src/casync/src/canbd.c:412,1
    - Dst: mfree
      Src: /src/casync/src/canbd.c:415,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 117
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaBlockDevice*
    assertStmts:
    - condition: ((d->socket_fd[0] < 0) == (d->socket_fd[1] < 0))
      pos:
        line_end: 288
        line_start: 288
        source_file: /src/casync/src/canbd.c
    constantsTouched: []
    func_position:
      end: 418
      start: 273
    functionDepth: 4
    functionLinenumber: 273
    functionLinenumberEnd: 418
    functionName: ca_block_device_open
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached:
    - mfree
    - safe_close
    - IN_SET
    - _exit
    - safe_close_pair
    - fstat
    - free
    - socketpair
    - asprintf
    - ca_block_device_establish_friendly_name
    - prctl
    - ioctl
    - S_ISBLK
    - assert
    - fork
    - open
    linkageType: ''
    returnType: int
    signature: int ca_block_device_open(CaBlockDevice *d)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/casync/src/canbd.c:429,1
    - Dst: be32toh
      Src: /src/casync/src/canbd.c:439,1
    - Dst: be32toh
      Src: /src/casync/src/canbd.c:442,1
    - Dst: be32toh
      Src: /src/casync/src/canbd.c:445,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaBlockDevice*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 454
    functionName: ca_block_device_step
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached:
    - be32toh
    - read
    linkageType: ''
    returnType: int
    signature: int ca_block_device_step(CaBlockDevice *d)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: be64toh
      Src: /src/casync/src/canbd.c:465,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaBlockDevice*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 467
    functionName: ca_block_device_get_request_offset
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached:
    - be64toh
    linkageType: ''
    returnType: int
    signature: int ca_block_device_get_request_offset(CaBlockDevice *d, uint64_t *ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: be32toh
      Src: /src/casync/src/canbd.c:478,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaBlockDevice*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 480
    functionName: ca_block_device_get_request_size
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached:
    - be32toh
    linkageType: ''
    returnType: int
    signature: int ca_block_device_get_request_size(CaBlockDevice *d, uint64_t *ret)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: htobe32
      Src: /src/casync/src/canbd.c:484,1
    - Dst: be64toh
      Src: /src/casync/src/canbd.c:498,1
    - Dst: be32toh
      Src: /src/casync/src/canbd.c:500,1
    - Dst: memcpy
      Src: /src/casync/src/canbd.c:503,1
    - Dst: loop_write_block
      Src: /src/casync/src/canbd.c:505,1
    - Dst: loop_write_block
      Src: /src/casync/src/canbd.c:509,1
    - Dst: memset
      Src: /src/casync/src/canbd.c:513,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - d
    - offset
    - data
    - size
    argTypes:
    - CaBlockDevice*
    - uint64_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 516
    functionName: ca_block_device_put_data
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached:
    - be64toh
    - memcpy
    - memset
    - loop_write_block
    - htobe32
    - be32toh
    linkageType: ''
    returnType: int
    signature: int ca_block_device_put_data(CaBlockDevice *d, uint64_t offset, const
      void *data, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - d
    argTypes:
    - CaBlockDevice*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 527
    functionName: ca_block_device_get_poll_fd
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_block_device_get_poll_fd(CaBlockDevice *d)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nsec_to_timespec
      Src: /src/casync/src/canbd.c:548,1
    - Dst: ppoll
      Src: /src/casync/src/canbd.c:550,1
    - Dst: ppoll
      Src: /src/casync/src/canbd.c:552,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - d
    - timeout_nsec
    - ss
    argTypes:
    - CaBlockDevice*
    - uint64_t
    - sigset_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 557
    functionName: ca_block_device_poll
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 0
    functionsReached:
    - ppoll
    - nsec_to_timespec
    linkageType: ''
    returnType: int
    signature: int ca_block_device_poll(CaBlockDevice *d, uint64_t timeout_nsec, const
      sigset_t *ss)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaBlockDevice*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 559
    functionDepth: 0
    functionLinenumber: 559
    functionLinenumberEnd: 570
    functionName: ca_block_device_get_path
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_block_device_get_path(CaBlockDevice *d, const char **ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: streq_ptr
      Src: /src/casync/src/canbd.c:580,1
    - Dst: strdup
      Src: /src/casync/src/canbd.c:584,1
    - Dst: free
      Src: /src/casync/src/canbd.c:590,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - d
    - node
    argTypes:
    - CaBlockDevice*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 572
    functionDepth: 2
    functionLinenumber: 572
    functionLinenumberEnd: 594
    functionName: ca_block_device_set_path
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached:
    - free
    - streq_ptr
    - strdup
    linkageType: ''
    returnType: int
    signature: int ca_block_device_set_path(CaBlockDevice *d, const char *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - d
    - ret
    argTypes:
    - CaBlockDevice*
    - dev_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 609
    functionName: ca_block_device_get_devnum
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ca_block_device_get_devnum(CaBlockDevice *d, dev_t *ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/casync/src/canbd.c:619,1
    - Dst: startswith
      Src: /src/casync/src/canbd.c:624,1
    - Dst: strspn
      Src: /src/casync/src/canbd.c:628,1
    - Dst: startswith
      Src: /src/casync/src/canbd.c:633,1
    - Dst: safe_atou
      Src: /src/casync/src/canbd.c:637,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 642
    functionName: ca_block_device_test_nbd
    functionSourceFile: /src/casync/src/canbd.c
    functionUses: 1
    functionsReached:
    - startswith
    - safe_atou
    - strspn
    linkageType: ''
    returnType: int
    signature: int ca_block_device_test_nbd(const char *name)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/rm-rf.c:19,1
    - Dst: unlinkat
      Src: /src/casync/src/rm-rf.c:22,1
    - Dst: openat
      Src: /src/casync/src/rm-rf.c:30,1
    - Dst: fstat
      Src: /src/casync/src/rm-rf.c:42,1
    - Dst: S_ISDIR
      Src: /src/casync/src/rm-rf.c:45,1
    - Dst: S_ISREG
      Src: /src/casync/src/rm-rf.c:49,1
    - Dst: mask_attr_fd
      Src: /src/casync/src/rm-rf.c:53,1
    - Dst: unlinkat
      Src: /src/casync/src/rm-rf.c:59,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 4
    argNames:
    - dir_fd
    - name
    - flags
    - rflags
    argTypes:
    - int
    - char*
    - int
    - RemoveFlags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 63
    functionName: unlinkat_immutable
    functionSourceFile: /src/casync/src/rm-rf.c
    functionUses: 0
    functionsReached:
    - unlinkat
    - mask_attr_fd
    - S_ISDIR
    - fstat
    - S_ISREG
    - openat
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int unlinkat_immutable(int dir_fd, const char *name, int flags, RemoveFlags
      rflags)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/rm-rf.c:71,1
    - Dst: fstatfs
      Src: /src/casync/src/rm-rf.c:78,1
    - Dst: safe_close
      Src: /src/casync/src/rm-rf.c:80,1
    - Dst: is_temporary_fs
      Src: /src/casync/src/rm-rf.c:84,1
    - Dst: safe_close
      Src: /src/casync/src/rm-rf.c:88,1
    - Dst: fstat
      Src: /src/casync/src/rm-rf.c:95,1
    - Dst: safe_close
      Src: /src/casync/src/rm-rf.c:96,1
    - Dst: fdopendir
      Src: /src/casync/src/rm-rf.c:103,1
    - Dst: safe_close
      Src: /src/casync/src/rm-rf.c:105,1
    - Dst: readdir
      Src: /src/casync/src/rm-rf.c:115,1
    - Dst: dot_or_dot_dot
      Src: /src/casync/src/rm-rf.c:125,1
    - Dst: fstatat
      Src: /src/casync/src/rm-rf.c:129,1
    - Dst: S_ISDIR
      Src: /src/casync/src/rm-rf.c:135,1
    - Dst: openat
      Src: /src/casync/src/rm-rf.c:146,1
    - Dst: rm_rf_children
      Src: /src/casync/src/rm-rf.c:155,1
    - Dst: unlinkat_immutable
      Src: /src/casync/src/rm-rf.c:159,1
    - Dst: unlinkat_immutable
      Src: /src/casync/src/rm-rf.c:167,1
    - Dst: closedir
      Src: /src/casync/src/rm-rf.c:175,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 74
    argCount: 3
    argNames:
    - fd
    - flags
    - root_dev
    argTypes:
    - int
    - RemoveFlags
    - struct stat*
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 70
        line_start: 70
        source_file: /src/casync/src/rm-rf.c
    constantsTouched: []
    func_position:
      end: 178
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 178
    functionName: rm_rf_children
    functionSourceFile: /src/casync/src/rm-rf.c
    functionUses: 3
    functionsReached:
    - fstatfs
    - is_temporary_fs
    - safe_close
    - fstat
    - S_ISDIR
    - closedir
    - openat
    - readdir
    - fstatat
    - fdopendir
    - assert
    - rm_rf_children
    - dot_or_dot_dot
    - unlinkat_immutable
    linkageType: ''
    returnType: int
    signature: int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/rm-rf.c:184,1
    - Dst: assert
      Src: /src/casync/src/rm-rf.c:185,1
    - Dst: streq
      Src: /src/casync/src/rm-rf.c:189,1
    - Dst: openat
      Src: /src/casync/src/rm-rf.c:192,1
    - Dst: IN_SET
      Src: /src/casync/src/rm-rf.c:195,1
    - Dst: openat
      Src: /src/casync/src/rm-rf.c:202,1
    - Dst: fstatfs
      Src: /src/casync/src/rm-rf.c:206,1
    - Dst: safe_close
      Src: /src/casync/src/rm-rf.c:207,1
    - Dst: is_temporary_fs
      Src: /src/casync/src/rm-rf.c:211,1
    - Dst: unlinkat_immutable
      Src: /src/casync/src/rm-rf.c:216,1
    - Dst: rm_rf_children
      Src: /src/casync/src/rm-rf.c:224,1
    - Dst: unlinkat_immutable
      Src: /src/casync/src/rm-rf.c:227,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 34
    argCount: 3
    argNames:
    - dir_fd
    - path
    - flags
    argTypes:
    - int
    - char*
    - RemoveFlags
    assertStmts:
    - condition: (dir_fd == AT_FDCWD || dir_fd >= 0)
      pos:
        line_end: 183
        line_start: 183
        source_file: /src/casync/src/rm-rf.c
    - condition: (path)
      pos:
        line_end: 184
        line_start: 184
        source_file: /src/casync/src/rm-rf.c
    constantsTouched: []
    func_position:
      end: 233
      start: 180
    functionDepth: 4
    functionLinenumber: 180
    functionLinenumberEnd: 233
    functionName: rm_rf_at
    functionSourceFile: /src/casync/src/rm-rf.c
    functionUses: 2
    functionsReached:
    - fstatfs
    - safe_close
    - IN_SET
    - is_temporary_fs
    - openat
    - streq
    - assert
    - rm_rf_children
    - unlinkat_immutable
    linkageType: ''
    returnType: int
    signature: int rm_rf_at(int dir_fd, const char *path, RemoveFlags flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rm_rf_at
      Src: /src/casync/src/rm-rf.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path
    - flags
    argTypes:
    - char*
    - RemoveFlags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 235
    functionDepth: 5
    functionLinenumber: 235
    functionLinenumberEnd: 237
    functionName: rm_rf
    functionSourceFile: /src/casync/src/rm-rf.c
    functionUses: 4
    functionsReached:
    - rm_rf_at
    linkageType: ''
    returnType: int
    signature: int rm_rf(const char *path, RemoveFlags flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - pool_name
    - ','
    - tile_type
    - ','
    - alloc_at_least
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 45
    functionName: DEFINE_MEMPOOL
    functionSourceFile: /src/casync/src/mempool.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_MEMPOOL(pool_name, tile_type, alloc_at_least)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/time-util.c:27,1
    - Dst: assert
      Src: /src/casync/src/time-util.c:28,1
    - Dst: strncpy
      Src: /src/casync/src/time-util.c:31,1
    - Dst: strncpy
      Src: /src/casync/src/time-util.c:37,1
    - Dst: ELEMENTSOF
      Src: /src/casync/src/time-util.c:44,1
    - Dst: snprintf
      Src: /src/casync/src/time-util.c:80,1
    - Dst: snprintf
      Src: /src/casync/src/time-util.c:95,1
    - Dst: MIN
      Src: /src/casync/src/time-util.c:104,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 49
    argCount: 4
    argNames:
    - buf
    - l
    - t
    - accuracy
    argTypes:
    - char*
    - size_t
    - uint64_t
    - uint64_t
    assertStmts:
    - condition: (buf)
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/casync/src/time-util.c
    - condition: (l > 0)
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/casync/src/time-util.c
    constantsTouched: []
    func_position:
      end: 115
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 115
    functionName: format_timespan
    functionSourceFile: /src/casync/src/time-util.c
    functionUses: 1
    functionsReached:
    - strncpy
    - ELEMENTSOF
    - assert
    - MIN
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *format_timespan(char *buf, size_t l, uint64_t t, uint64_t accuracy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/siphash24.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - x
    - b
    argTypes:
    - uint64_t
    - uint8_t
    assertStmts:
    - condition: (b < 64)
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/casync/src/siphash24.c
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: rotate_left
    functionSourceFile: /src/casync/src/siphash24.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t rotate_left(uint64_t x, uint8_t b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/siphash24.c:34,1
    - Dst: rotate_left
      Src: /src/casync/src/siphash24.c:37,1
    - Dst: rotate_left
      Src: /src/casync/src/siphash24.c:39,1
    - Dst: rotate_left
      Src: /src/casync/src/siphash24.c:41,1
    - Dst: rotate_left
      Src: /src/casync/src/siphash24.c:44,1
    - Dst: rotate_left
      Src: /src/casync/src/siphash24.c:47,1
    - Dst: rotate_left
      Src: /src/casync/src/siphash24.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct siphash*
    assertStmts:
    - condition: (state)
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/casync/src/siphash24.c
    constantsTouched: []
    func_position:
      end: 50
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 50
    functionName: sipround
    functionSourceFile: /src/casync/src/siphash24.c
    functionUses: 0
    functionsReached:
    - assert
    - rotate_left
    linkageType: ''
    returnType: void
    signature: void sipround(struct siphash *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/siphash24.c:55,1
    - Dst: assert
      Src: /src/casync/src/siphash24.c:56,1
    - Dst: read_le64
      Src: /src/casync/src/siphash24.c:58,1
    - Dst: read_le64
      Src: /src/casync/src/siphash24.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - state
    - k
    argTypes:
    - struct siphash*
    - uint8_t[]
    assertStmts:
    - condition: (state)
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/casync/src/siphash24.c
    - condition: (k)
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/casync/src/siphash24.c
    constantsTouched: []
    func_position:
      end: 70
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 70
    functionName: siphash24_init
    functionSourceFile: /src/casync/src/siphash24.c
    functionUses: 1
    functionsReached:
    - assert
    - read_le64
    linkageType: ''
    returnType: void
    signature: void siphash24_init(struct siphash *state, const uint8_t k[16])
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/siphash24.c:79,1
    - Dst: assert
      Src: /src/casync/src/siphash24.c:80,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:95,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:96,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:97,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:98,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:99,1
    - Dst: sipround
      Src: /src/casync/src/siphash24.c:103,1
    - Dst: sipround
      Src: /src/casync/src/siphash24.c:104,1
    - Dst: read_le64
      Src: /src/casync/src/siphash24.c:113,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:115,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:116,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:117,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:118,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:119,1
    - Dst: sipround
      Src: /src/casync/src/siphash24.c:122,1
    - Dst: sipround
      Src: /src/casync/src/siphash24.c:123,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 52
    argCount: 3
    argNames:
    - _in
    - inlen
    - state
    argTypes:
    - void*
    - size_t
    - struct siphash*
    assertStmts:
    - condition: (in)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/casync/src/siphash24.c
    - condition: (state)
      pos:
        line_end: 79
        line_start: 79
        source_file: /src/casync/src/siphash24.c
    constantsTouched: []
    func_position:
      end: 153
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 153
    functionName: siphash24_compress
    functionSourceFile: /src/casync/src/siphash24.c
    functionUses: 4
    functionsReached:
    - assert
    - read_le64
    - sipround
    - printf
    linkageType: ''
    returnType: void
    signature: void siphash24_compress(const void *_in, size_t inlen, struct siphash
      *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/siphash24.c:158,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:163,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:164,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:165,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:166,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:167,1
    - Dst: sipround
      Src: /src/casync/src/siphash24.c:171,1
    - Dst: sipround
      Src: /src/casync/src/siphash24.c:172,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:176,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:177,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:178,1
    - Dst: printf
      Src: /src/casync/src/siphash24.c:179,1
    - Dst: sipround
      Src: /src/casync/src/siphash24.c:183,1
    - Dst: sipround
      Src: /src/casync/src/siphash24.c:184,1
    - Dst: sipround
      Src: /src/casync/src/siphash24.c:185,1
    - Dst: sipround
      Src: /src/casync/src/siphash24.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct siphash*
    assertStmts:
    - condition: (state)
      pos:
        line_end: 157
        line_start: 157
        source_file: /src/casync/src/siphash24.c
    constantsTouched: []
    func_position:
      end: 189
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 189
    functionName: siphash24_finalize
    functionSourceFile: /src/casync/src/siphash24.c
    functionUses: 1
    functionsReached:
    - assert
    - sipround
    - printf
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t siphash24_finalize(struct siphash *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/siphash24.c:194,1
    - Dst: assert
      Src: /src/casync/src/siphash24.c:195,1
    - Dst: siphash24_init
      Src: /src/casync/src/siphash24.c:197,1
    - Dst: siphash24_compress
      Src: /src/casync/src/siphash24.c:198,1
    - Dst: siphash24_finalize
      Src: /src/casync/src/siphash24.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - in
    - inlen
    - k
    argTypes:
    - void*
    - size_t
    - uint8_t[]
    assertStmts:
    - condition: (in)
      pos:
        line_end: 193
        line_start: 193
        source_file: /src/casync/src/siphash24.c
    - condition: (k)
      pos:
        line_end: 194
        line_start: 194
        source_file: /src/casync/src/siphash24.c
    constantsTouched: []
    func_position:
      end: 201
      start: 191
    functionDepth: 3
    functionLinenumber: 191
    functionLinenumberEnd: 201
    functionName: siphash24
    functionSourceFile: /src/casync/src/siphash24.c
    functionUses: 2
    functionsReached:
    - assert
    - siphash24_finalize
    - siphash24_init
    - siphash24_compress
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t siphash24(const void *in, size_t inlen, const uint8_t k[16])
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: isempty
      Src: /src/casync/src/notify.c:22,1
    - Dst: getenv
      Src: /src/casync/src/notify.c:25,1
    - Dst: strlen
      Src: /src/casync/src/notify.c:29,1
    - Dst: IN_SET
      Src: /src/casync/src/notify.c:32,1
    - Dst: socket
      Src: /src/casync/src/notify.c:35,1
    - Dst: strncpy
      Src: /src/casync/src/notify.c:41,1
    - Dst: strncpy
      Src: /src/casync/src/notify.c:43,1
    - Dst: sendto
      Src: /src/casync/src/notify.c:45,1
    - Dst: strlen
      Src: /src/casync/src/notify.c:45,1
    - Dst: SOCKADDR_UN_LEN
      Src: /src/casync/src/notify.c:45,1
    - Dst: safe_close
      Src: /src/casync/src/notify.c:54,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - text
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 10
    functionDepth: 3
    functionLinenumber: 10
    functionLinenumberEnd: 56
    functionName: send_notify
    functionSourceFile: /src/casync/src/notify.c
    functionUses: 6
    functionsReached:
    - safe_close
    - IN_SET
    - strncpy
    - getenv
    - strlen
    - SOCKADDR_UN_LEN
    - socket
    - isempty
    - sendto
    linkageType: ''
    returnType: int
    signature: int send_notify(const char *text)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/chattr.c:11,1
    - Dst: assert
      Src: /src/casync/src/chattr.c:12,1
    - Dst: ioctl
      Src: /src/casync/src/chattr.c:14,1
    - Dst: ERRNO_IS_UNSUPPORTED
      Src: /src/casync/src/chattr.c:16,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - fd
    - ret
    argTypes:
    - int
    - unsigned*
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 10
        line_start: 10
        source_file: /src/casync/src/chattr.c
    - condition: (ret)
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/casync/src/chattr.c
    constantsTouched: []
    func_position:
      end: 25
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 25
    functionName: read_attr_fd
    functionSourceFile: /src/casync/src/chattr.c
    functionUses: 1
    functionsReached:
    - assert
    - ioctl
    - ERRNO_IS_UNSUPPORTED
    linkageType: ''
    returnType: int
    signature: int read_attr_fd(int fd, unsigned *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/chattr.c:28,1
    - Dst: ioctl
      Src: /src/casync/src/chattr.c:30,1
    - Dst: ERRNO_IS_UNSUPPORTED
      Src: /src/casync/src/chattr.c:34,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - fd
    - attr
    argTypes:
    - int
    - unsigned
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/casync/src/chattr.c
    constantsTouched: []
    func_position:
      end: 41
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 41
    functionName: write_attr_fd
    functionSourceFile: /src/casync/src/chattr.c
    functionUses: 0
    functionsReached:
    - assert
    - ioctl
    - ERRNO_IS_UNSUPPORTED
    linkageType: ''
    returnType: int
    signature: int write_attr_fd(int fd, unsigned attr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/chattr.c:47,1
    - Dst: read_attr_fd
      Src: /src/casync/src/chattr.c:52,1
    - Dst: write_attr_fd
      Src: /src/casync/src/chattr.c:60,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - fd
    - value
    - mask
    argTypes:
    - int
    - unsigned
    - unsigned
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/casync/src/chattr.c
    constantsTouched: []
    func_position:
      end: 61
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 61
    functionName: mask_attr_fd
    functionSourceFile: /src/casync/src/chattr.c
    functionUses: 5
    functionsReached:
    - assert
    - write_attr_fd
    - read_attr_fd
    linkageType: ''
    returnType: int
    signature: int mask_attr_fd(int fd, unsigned value, unsigned mask)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/chattr.c:64,1
    - Dst: assert
      Src: /src/casync/src/chattr.c:65,1
    - Dst: ioctl
      Src: /src/casync/src/chattr.c:67,1
    - Dst: ERRNO_IS_UNSUPPORTED
      Src: /src/casync/src/chattr.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - fd
    - ret
    argTypes:
    - int
    - uint32_t*
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 63
        line_start: 63
        source_file: /src/casync/src/chattr.c
    - condition: (ret)
      pos:
        line_end: 64
        line_start: 64
        source_file: /src/casync/src/chattr.c
    constantsTouched: []
    func_position:
      end: 77
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 77
    functionName: read_fat_attr_fd
    functionSourceFile: /src/casync/src/chattr.c
    functionUses: 1
    functionsReached:
    - assert
    - ioctl
    - ERRNO_IS_UNSUPPORTED
    linkageType: ''
    returnType: int
    signature: int read_fat_attr_fd(int fd, uint32_t *ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/chattr.c:80,1
    - Dst: ioctl
      Src: /src/casync/src/chattr.c:82,1
    - Dst: ERRNO_IS_UNSUPPORTED
      Src: /src/casync/src/chattr.c:84,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - fd
    - attr
    argTypes:
    - int
    - uint32_t
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 79
        line_start: 79
        source_file: /src/casync/src/chattr.c
    constantsTouched: []
    func_position:
      end: 91
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 91
    functionName: write_fat_attr_fd
    functionSourceFile: /src/casync/src/chattr.c
    functionUses: 0
    functionsReached:
    - assert
    - ioctl
    - ERRNO_IS_UNSUPPORTED
    linkageType: ''
    returnType: int
    signature: int write_fat_attr_fd(int fd, uint32_t attr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/chattr.c:97,1
    - Dst: read_fat_attr_fd
      Src: /src/casync/src/chattr.c:102,1
    - Dst: write_fat_attr_fd
      Src: /src/casync/src/chattr.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - fd
    - value
    - mask
    argTypes:
    - int
    - uint32_t
    - uint32_t
    assertStmts:
    - condition: (fd >= 0)
      pos:
        line_end: 96
        line_start: 96
        source_file: /src/casync/src/chattr.c
    constantsTouched: []
    func_position:
      end: 111
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 111
    functionName: mask_fat_attr_fd
    functionSourceFile: /src/casync/src/chattr.c
    functionUses: 1
    functionsReached:
    - write_fat_attr_fd
    - assert
    - read_fat_attr_fd
    linkageType: ''
    returnType: int
    signature: int mask_fat_attr_fd(int fd, uint32_t value, uint32_t mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ca_chunk_collection_unref
      Src: /src/casync/src/gc.h:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - CaChunkCollection**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 14
    functionName: ca_chunk_collection_unrefp
    functionSourceFile: /src/casync/src/gc.h
    functionUses: 0
    functionsReached:
    - ca_chunk_collection_unref
    linkageType: ''
    returnType: void
    signature: void ca_chunk_collection_unrefp(CaChunkCollection **c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new0
      Src: /src/casync/src/calocation.c:16,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 29
    functionName: ca_location_alloc
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 0
    functionsReached:
    - new0
    linkageType: ''
    returnType: CaLocation
    signature: CaLocation * ca_location_alloc(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CA_LOCATION_DESIGNATOR_VALID
      Src: /src/casync/src/calocation.c:40,1
    - Dst: isempty
      Src: /src/casync/src/calocation.c:42,1
    - Dst: ca_location_alloc
      Src: /src/casync/src/calocation.c:53,1
    - Dst: isempty
      Src: /src/casync/src/calocation.c:57,1
    - Dst: strdup
      Src: /src/casync/src/calocation.c:58,1
    - Dst: free
      Src: /src/casync/src/calocation.c:60,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 5
    argNames:
    - path
    - designator
    - offset
    - size
    - ret
    argTypes:
    - char*
    - CaLocationDesignator
    - uint64_t
    - uint64_t
    - CaLocation**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 71
    functionName: ca_location_new
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 5
    functionsReached:
    - isempty
    - ca_location_alloc
    - CA_LOCATION_DESIGNATOR_VALID
    - strdup
    - free
    linkageType: ''
    returnType: int
    signature: "int ca_location_new(\n                const char *path,\n                CaLocationDesignator
      designator,\n                uint64_t offset,\n                uint64_t size,\n
      \               CaLocation **ret)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/calocation.c:77,1
    - Dst: free
      Src: /src/casync/src/calocation.c:83,1
    - Dst: free
      Src: /src/casync/src/calocation.c:84,1
    - Dst: ca_file_root_unref
      Src: /src/casync/src/calocation.c:86,1
    - Dst: ca_name_table_unref
      Src: /src/casync/src/calocation.c:87,1
    - Dst: mfree
      Src: /src/casync/src/calocation.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - l
    argTypes:
    - CaLocation*
    assertStmts:
    - condition: (l->n_ref > 0)
      pos:
        line_end: 76
        line_start: 76
        source_file: /src/casync/src/calocation.c
    constantsTouched: []
    func_position:
      end: 90
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 90
    functionName: ca_location_unref
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 13
    functionsReached:
    - ca_name_table_unref
    - mfree
    - assert
    - ca_file_root_unref
    - free
    linkageType: ''
    returnType: CaLocation
    signature: CaLocation * ca_location_unref(CaLocation *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/casync/src/calocation.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - l
    argTypes:
    - CaLocation*
    assertStmts:
    - condition: (l->n_ref > 0)
      pos:
        line_end: 95
        line_start: 95
        source_file: /src/casync/src/calocation.c
    constantsTouched: []
    func_position:
      end: 100
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 100
    functionName: ca_location_ref
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 3
    functionsReached:
    - assert
    linkageType: ''
    returnType: CaLocation
    signature: CaLocation * ca_location_ref(CaLocation *l)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ca_location_new
      Src: /src/casync/src/calocation.c:114,1
    - Dst: ca_file_root_ref
      Src: /src/casync/src/calocation.c:118,1
    - Dst: ca_name_table_ref
      Src: /src/casync/src/calocation.c:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - l
    - ret
    argTypes:
    - CaLocation*
    - CaLocation**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 131
    functionName: ca_location_copy
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 0
    functionsReached:
    - ca_location_new
    - ca_file_root_ref
    - ca_name_table_ref
    linkageType: ''
    returnType: int
    signature: int ca_location_copy(CaLocation *l, CaLocation **ret)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/calocation.c:134,1
    - Dst: realloc_buffer_printf
      Src: /src/casync/src/calocation.c:165,1
    - Dst: strempty
      Src: /src/casync/src/calocation.c:165,1
    - Dst: realloc_buffer_printf
      Src: /src/casync/src/calocation.c:170,1
    - Dst: realloc_buffer_printf
      Src: /src/casync/src/calocation.c:176,1
    - Dst: realloc_buffer_printf
      Src: /src/casync/src/calocation.c:183,1
    - Dst: realloc_buffer_printf
      Src: /src/casync/src/calocation.c:190,1
    - Dst: realloc_buffer_printf
      Src: /src/casync/src/calocation.c:196,1
    - Dst: realloc_buffer_append_byte
      Src: /src/casync/src/calocation.c:202,1
    - Dst: ca_name_table_format_realloc_buffer
      Src: /src/casync/src/calocation.c:205,1
    - Dst: realloc_buffer_append_byte
      Src: /src/casync/src/calocation.c:210,1
    - Dst: free
      Src: /src/casync/src/calocation.c:213,1
    - Dst: realloc_buffer_steal
      Src: /src/casync/src/calocation.c:214,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 47
    argCount: 2
    argNames:
    - l
    - with
    argTypes:
    - CaLocation*
    - CaLocationWith
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 133
    functionDepth: 5
    functionLinenumber: 133
    functionLinenumberEnd: 218
    functionName: ca_location_format_full
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 2
    functionsReached:
    - strempty
    - free
    - realloc_buffer_steal
    - ca_name_table_format_realloc_buffer
    - realloc_buffer_printf
    - realloc_buffer_append_byte
    - _cleanup_
    linkageType: ''
    returnType: char
    signature: char * ca_location_format_full(CaLocation *l, CaLocationWith with)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/calocation.c:222,1
    - Dst: strrchr
      Src: /src/casync/src/calocation.c:234,1
    - Dst: CA_LOCATION_DESIGNATOR_VALID
      Src: /src/casync/src/calocation.c:241,1
    - Dst: strchr
      Src: /src/casync/src/calocation.c:245,1
    - Dst: ca_name_table_parse
      Src: /src/casync/src/calocation.c:249,1
    - Dst: strndupa
      Src: /src/casync/src/calocation.c:253,1
    - Dst: strchr
      Src: /src/casync/src/calocation.c:257,1
    - Dst: safe_atou64
      Src: /src/casync/src/calocation.c:259,1
    - Dst: strndupa
      Src: /src/casync/src/calocation.c:265,1
    - Dst: strchr
      Src: /src/casync/src/calocation.c:269,1
    - Dst: safe_atox64
      Src: /src/casync/src/calocation.c:271,1
    - Dst: strndupa
      Src: /src/casync/src/calocation.c:277,1
    - Dst: strchr
      Src: /src/casync/src/calocation.c:281,1
    - Dst: strchr
      Src: /src/casync/src/calocation.c:286,1
    - Dst: strndupa
      Src: /src/casync/src/calocation.c:291,1
    - Dst: safe_atou64
      Src: /src/casync/src/calocation.c:292,1
    - Dst: strchr
      Src: /src/casync/src/calocation.c:297,1
    - Dst: safe_atou
      Src: /src/casync/src/calocation.c:302,1
    - Dst: strndupa
      Src: /src/casync/src/calocation.c:309,1
    - Dst: safe_atou64
      Src: /src/casync/src/calocation.c:313,1
    - Dst: strndupa
      Src: /src/casync/src/calocation.c:319,1
    - Dst: strchr
      Src: /src/casync/src/calocation.c:323,1
    - Dst: safe_atou64
      Src: /src/casync/src/calocation.c:325,1
    - Dst: strndupa
      Src: /src/casync/src/calocation.c:331,1
    - Dst: safe_atou64
      Src: /src/casync/src/calocation.c:334,1
    - Dst: strndup
      Src: /src/casync/src/calocation.c:346,1
    - Dst: isempty
      Src: /src/casync/src/calocation.c:351,1
    - Dst: free
      Src: /src/casync/src/calocation.c:352,1
    - Dst: ca_location_alloc
      Src: /src/casync/src/calocation.c:356,1
    - Dst: free
      Src: /src/casync/src/calocation.c:358,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 110
    argCount: 2
    argNames:
    - text
    - ret
    argTypes:
    - char*
    - CaLocation**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 220
    functionDepth: 5
    functionLinenumber: 220
    functionLinenumberEnd: 379
    functionName: ca_location_parse
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 4
    functionsReached:
    - strrchr
    - strndup
    - safe_atox64
    - ca_name_table_parse
    - safe_atou
    - safe_atou64
    - free
    - isempty
    - ca_location_alloc
    - CA_LOCATION_DESIGNATOR_VALID
    - strndupa
    - strchr
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_location_parse(const char *text, CaLocation **ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mfree
      Src: /src/casync/src/calocation.c:395,1
    - Dst: ca_location_copy
      Src: /src/casync/src/calocation.c:399,1
    - Dst: ca_location_unref
      Src: /src/casync/src/calocation.c:403,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - l
    - size
    argTypes:
    - CaLocation**
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 381
    functionDepth: 4
    functionLinenumber: 381
    functionLinenumberEnd: 409
    functionName: ca_location_patch_size
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 6
    functionsReached:
    - mfree
    - ca_location_unref
    - ca_location_copy
    linkageType: ''
    returnType: int
    signature: int ca_location_patch_size(CaLocation **l, uint64_t size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ca_location_copy
      Src: /src/casync/src/calocation.c:425,1
    - Dst: ca_location_unref
      Src: /src/casync/src/calocation.c:429,1
    - Dst: ca_file_root_unref
      Src: /src/casync/src/calocation.c:433,1
    - Dst: ca_file_root_ref
      Src: /src/casync/src/calocation.c:434,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - l
    - root
    argTypes:
    - CaLocation**
    - CaFileRoot*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 411
    functionDepth: 4
    functionLinenumber: 411
    functionLinenumberEnd: 437
    functionName: ca_location_patch_root
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 1
    functionsReached:
    - ca_file_root_ref
    - ca_file_root_unref
    - ca_location_unref
    - ca_location_copy
    linkageType: ''
    returnType: int
    signature: int ca_location_patch_root(CaLocation **l, CaFileRoot *root)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mfree
      Src: /src/casync/src/calocation.c:454,1
    - Dst: ca_location_copy
      Src: /src/casync/src/calocation.c:458,1
    - Dst: ca_location_unref
      Src: /src/casync/src/calocation.c:462,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - l
    - n_bytes
    argTypes:
    - CaLocation**
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 439
    functionDepth: 4
    functionLinenumber: 439
    functionLinenumberEnd: 476
    functionName: ca_location_advance
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 3
    functionsReached:
    - mfree
    - ca_location_unref
    - ca_location_copy
    linkageType: ''
    returnType: int
    signature: int ca_location_advance(CaLocation **l, uint64_t n_bytes)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: streq_ptr
      Src: /src/casync/src/calocation.c:496,1
    - Dst: mfree
      Src: /src/casync/src/calocation.c:520,1
    - Dst: ca_location_copy
      Src: /src/casync/src/calocation.c:524,1
    - Dst: ca_location_unref
      Src: /src/casync/src/calocation.c:528,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 39
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - CaLocation**
    - CaLocation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 478
    functionDepth: 4
    functionLinenumber: 478
    functionLinenumberEnd: 534
    functionName: ca_location_merge
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 1
    functionsReached:
    - ca_location_unref
    - mfree
    - streq_ptr
    - ca_location_copy
    linkageType: ''
    returnType: int
    signature: int ca_location_merge(CaLocation **a, CaLocation *b)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: _cleanup_
      Src: /src/casync/src/calocation.c:537,1
    - Dst: isempty
      Src: /src/casync/src/calocation.c:551,1
    - Dst: fcntl
      Src: /src/casync/src/calocation.c:552,1
    - Dst: openat
      Src: /src/casync/src/calocation.c:554,1
    - Dst: isempty
      Src: /src/casync/src/calocation.c:559,1
    - Dst: isempty
      Src: /src/casync/src/calocation.c:559,1
    - Dst: isempty
      Src: /src/casync/src/calocation.c:561,1
    - Dst: isempty
      Src: /src/casync/src/calocation.c:563,1
    - Dst: strjoina
      Src: /src/casync/src/calocation.c:566,1
    - Dst: open
      Src: /src/casync/src/calocation.c:568,1
    - Dst: fstat
      Src: /src/casync/src/calocation.c:579,1
    - Dst: MAX
      Src: /src/casync/src/calocation.c:585,1
    - Dst: timespec_to_nsec
      Src: /src/casync/src/calocation.c:585,1
    - Dst: timespec_to_nsec
      Src: /src/casync/src/calocation.c:585,1
    - Dst: ioctl
      Src: /src/casync/src/calocation.c:592,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 1
    argNames:
    - l
    argTypes:
    - CaLocation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 604
    functionName: ca_location_open
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 1
    functionsReached:
    - open
    - strjoina
    - timespec_to_nsec
    - fstat
    - openat
    - isempty
    - fcntl
    - ioctl
    - MAX
    - _cleanup_
    linkageType: ''
    returnType: int
    signature: int ca_location_open(CaLocation *l)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ca_digest_get_size
      Src: /src/casync/src/calocation.c:614,1
    - Dst: ca_digest_reset
      Src: /src/casync/src/calocation.c:617,1
    - Dst: ca_digest_write
      Src: /src/casync/src/calocation.c:620,1
    - Dst: strlen
      Src: /src/casync/src/calocation.c:620,1
    - Dst: ca_digest_write_u8
      Src: /src/casync/src/calocation.c:622,1
    - Dst: ca_digest_write_u64
      Src: /src/casync/src/calocation.c:623,1
    - Dst: ca_digest_write_u64
      Src: /src/casync/src/calocation.c:626,1
    - Dst: ca_digest_write_u64
      Src: /src/casync/src/calocation.c:629,1
    - Dst: ca_digest_write_u64
      Src: /src/casync/src/calocation.c:630,1
    - Dst: ca_digest_write_u32
      Src: /src/casync/src/calocation.c:633,1
    - Dst: ca_digest_write_u64
      Src: /src/casync/src/calocation.c:637,1
    - Dst: memcpy
      Src: /src/casync/src/calocation.c:639,1
    - Dst: ca_digest_read
      Src: /src/casync/src/calocation.c:639,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 4
    argNames:
    - digest
    - l
    - include_size
    - ret
    argTypes:
    - CaDigest*
    - CaLocation*
    - bool
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 606
    functionDepth: 3
    functionLinenumber: 606
    functionLinenumberEnd: 641
    functionName: ca_location_id_make
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 4
    functionsReached:
    - ca_digest_get_size
    - ca_digest_write
    - memcpy
    - strlen
    - ca_digest_write_u32
    - ca_digest_write_u64
    - ca_digest_read
    - ca_digest_write_u8
    - ca_digest_reset
    linkageType: ''
    returnType: int
    signature: int ca_location_id_make(CaDigest *digest, CaLocation *l, bool include_size,
      CaChunkID *ret)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/casync/src/calocation.c:656,1
    - Dst: strempty
      Src: /src/casync/src/calocation.c:656,1
    - Dst: strempty
      Src: /src/casync/src/calocation.c:656,1
    - Dst: ca_name_table_equal
      Src: /src/casync/src/calocation.c:685,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 34
    argCount: 3
    argNames:
    - a
    - b
    - with
    argTypes:
    - CaLocation*
    - CaLocation*
    - CaLocationWith
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 643
    functionDepth: 2
    functionLinenumber: 643
    functionLinenumberEnd: 689
    functionName: ca_location_equal
    functionSourceFile: /src/casync/src/calocation.c
    functionUses: 3
    functionsReached:
    - streq
    - ca_name_table_equal
    - strempty
    linkageType: ''
    returnType: bool
    signature: bool ca_location_equal(CaLocation *a, CaLocation *b, CaLocationWith
      with)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/casync/src/cachunkid.h:33,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - CaChunkID*
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 34
    functionName: ca_chunk_id_equal
    functionSourceFile: /src/casync/src/cachunkid.h
    functionUses: 4
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool ca_chunk_id_equal(const CaChunkID *a, const CaChunkID *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - a
    argTypes:
    - CaChunkID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: ca_chunk_id_is_null
    functionSourceFile: /src/casync/src/cachunkid.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ca_chunk_id_is_null(const CaChunkID *a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - prefix
    - ','
    - suffix
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: CA_CHUNK_ID_PATH_SIZE
    functionSourceFile: /src/casync/src/cachunkid.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CA_CHUNK_ID_PATH_SIZE(prefix, suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: ca_name_table_new
    functionSourceFile: /src/casync/src/canametable.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ca_name_table_new()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - CaNameTable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: ca_name_table_items
    functionSourceFile: /src/casync/src/canametable.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t ca_name_table_items(CaNameTable *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_name_table_items
      Src: /src/casync/src/canametable.h:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - t
    - i
    argTypes:
    - CaNameTable*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: ca_name_table_get
    functionSourceFile: /src/casync/src/canametable.h
    functionUses: 1
    functionsReached:
    - ca_name_table_items
    linkageType: ''
    returnType: CaNameItem
    signature: CaNameItem * ca_name_table_get(CaNameTable *t, size_t i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ca_name_table_items
      Src: /src/casync/src/canametable.h:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - CaNameTable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 72
    functionName: ca_name_table_last
    functionSourceFile: /src/casync/src/canametable.h
    functionUses: 2
    functionsReached:
    - ca_name_table_items
    linkageType: ''
    returnType: CaNameItem
    signature: CaNameItem *ca_name_table_last(CaNameTable *t)
Fuzzer filename: /src/casync/test/fuzz/fuzz-compress.c
Fuzzing method: LLVMFuzzerTestOneInput
included-header-files:
- canametable.h
- fuzz.h
- linux/fs.h
- caprotocol-util.h
- sys/prctl.h
- unistd.h
- stddef.h
- selinux/selinux.h
- hashmap.h
- util.h
- math.h
- mempool.h
- fssize.h
- realloc-buffer.h
- linux/magic.h
- udev-util.h
- sys/uio.h
- quota-projid.h
- libgen.h
- stdio.h
- camakebst.h
- cautil.h
- caorigin.h
- sys/types.h
- copy.h
- pthread.h
- calocation.h
- sys/un.h
- caremote.h
- sys/statfs.h
- signal.h
- stdint.h
- stdbool.h
- inttypes.h
- cacache.h
- cadecoder.h
- cachunk.h
- sys/sysmacros.h
- cacompression.h
- dirent-util.h
- parse-util.h
- compressor.h
- caformat-util.h
- linux/types.h
- caprotocol.h
- grp.h
- sys/ioctl.h
- cadigest.h
- fnmatch.h
- cachunkid.h
- sys/xattr.h
- fcntl.h
- caindex.h
- limits.h
- string.h
- libudev.h
- zlib.h
- errno.h
- lzma.h
- acl/libacl.h
- stdlib.h
- canbd.h
- caformat.h
- linux/nbd.h
- assert.h
- stdarg.h
- poll.h
- sys/wait.h
- linux/btrfs.h
- linux/falloc.h
- sys/socket.h
- list.h
- siphash24.h
- getopt.h
- cafileroot.h
- casync.h
- sys/acl.h
- log.h
- dirent.h
- set.h
- caseed.h
- time.h
- linux/fcntl.h
- cacommon.h
- curl/curl.h
- caencoder.h
- pwd.h
- fuse.h
- reflink.h
- sys/random.h
- ctype.h
- linux/msdos_fs.h
- sys/file.h
- gcc-macro.h
- chattr.h
- gc.h
- openssl/sha.h
- cachunker.h
- signal-handler.h
- syslog.h
- sys/vfs.h
- notify.h
- camatch.h
- zstd.h
- cafuse.h
- time-util.h
- sys/stat.h
- def.h
- castore.h
- hash-funcs.h
- rm-rf.h
report: name
sources:
- function_names:
  - main
  source_file: /src/casync/test/test-camatch.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/casync/test/test-caindex.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/casync/test/test-calocation.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_chunk_file
  - main
  source_file: /src/casync/test/test-cachunk.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/casync/test/test-caorigin.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_rolling
  - test_chunk
  - test_set_size
  - main
  source_file: /src/casync/test/test-cachunker.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - encode
  - decode
  - main
  source_file: /src/casync/test/test-caencoder.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - exit_signal_handler
  - main
  source_file: /src/casync/test/notify-wait.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TIMEOUT_NSEC
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/casync/test/notify-wait.c
      type_or_value: UINT64_C(30000000000)
    structs: []
    typedefs: []
    union:
    - fields:
      - name: sa
        type: struct sockaddr
      - name: un
        type: struct sockaddr_un
      item_type: union
      name: "sa = {\n                .un.sun_family = AF_UNIX,\n        }"
      pos:
        line_end: 31
        line_start: 28
        source_file: /src/casync/test/notify-wait.c
- function_names:
  - test_speed
  - main
  source_file: /src/casync/test/test-cadigest.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_SPEED_RUNTIME_NSEC
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/casync/test/test-cadigest.c
      type_or_value: (5U*NSEC_PER_SEC)
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/casync/test/test-util.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PART1
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/casync/test/test-util.c
      type_or_value: '4096'
    - item_type: preproc_def
      name: PART2
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/casync/test/test-util.c
      type_or_value: '4096'
    - item_type: preproc_def
      name: PART3
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/casync/test/test-util.c
      type_or_value: '8192'
    - item_type: preproc_def
      name: PART4
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/casync/test/test-util.c
      type_or_value: '3000'
    - item_type: preproc_def
      name: PART5
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/casync/test/test-util.c
      type_or_value: '13'
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_locator_has_suffix
  - test_strip_file_url_one
  - test_strip_file_url
  - test_classify_locator
  - test_locator_patch_last_component_one
  - test_locator_patch_last_component
  - main
  source_file: /src/casync/test/test-cautil.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - process
  - draw
  - run
  - main
  source_file: /src/casync/test/test-cachunker-histogram.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BUFFER_SIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/casync/test/test-cachunker-histogram.c
      type_or_value: (64*1024)
    - item_type: preproc_def
      name: CHUNKS_MAX
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/casync/test/test-cachunker-histogram.c
      type_or_value: '1000000'
    - item_type: preproc_def
      name: THREADS_MAX
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/casync/test/test-cachunker-histogram.c
      type_or_value: '16'
    - item_type: preproc_def
      name: RUNTIME_NSEC
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/casync/test/test-cachunker-histogram.c
      type_or_value: UINT64_C(2000000000)
    - item_type: preproc_def
      name: N_BUCKETS
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/casync/test/test-cachunker-histogram.c
      type_or_value: '30'
    - item_type: preproc_def
      name: N_HEIGHT
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/casync/test/test-cachunker-histogram.c
      type_or_value: '69'
    structs:
    - fields:
      - name: id
        type: pthread_t
      - name: chunker
        type: CaChunker
      - name: '*histogram'
        type: unsigned
      - name: n_chunks
        type: unsigned
      - name: random_fd
        type: int
      - name: until
        type: uint64_t
      item_type: struct
      name: thread_info
      pos:
        line_end: 23
        line_start: 16
        source_file: /src/casync/test/test-cachunker-histogram.c
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/casync/test/test-casync.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - find_bst
  - test_makebst_size
  - main
  source_file: /src/casync/test/test-camakebst.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_MAX
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/casync/test/test-camakebst.c
      type_or_value: '9999'
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/casync/test/test-calc-digest.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/casync/test/test-feature-flags.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/casync/test/test-caformat.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/casync/test/fuzz/fuzz-main.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EXIT_TEST_SKIP
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/casync/test/fuzz/fuzz-main.c
      type_or_value: '77'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/test/fuzz/fuzz.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/casync/test/fuzz/fuzz-compress.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: alg
        type: uint32_t
      - name: reserved[5]
        type: uint32_t
      - name: data[]
        type: uint8_t
      item_type: struct
      name: header
      pos:
        line_end: 15
        line_start: 10
        source_file: /src/casync/test/fuzz/fuzz-compress.c
    typedefs: []
    union: []
- function_names:
  - ca_format_type_name
  - ca_with_feature_flags_parse_one
  - ca_with_feature_flags_format
  - ca_feature_flags_normalize
  - ca_feature_flags_are_normalized
  - ca_feature_flags_normalize_mask
  - ca_feature_flags_time_granularity_nsec
  - ca_feature_flags_from_chattr
  - ca_feature_flags_to_chattr
  - ca_feature_flags_from_fat_attrs
  - ca_feature_flags_to_fat_attrs
  - ca_feature_flags_from_magic
  - ca_feature_flags_from_digest_type
  - ca_feature_flags_to_digest_type
  source_file: /src/casync/src/caformat-util.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: feature
        type: uint64_t
      item_type: struct
      name: "with_feature_map[] = {\n        { \"16bit-uids\",       CA_FORMAT_WITH_16BIT_UIDS
        \      },\n        { \"32bit-uids\",       CA_FORMAT_WITH_32BIT_UIDS       },\n
        \       { \"user-names\",       CA_FORMAT_WITH_USER_NAMES       },\n        {
        \"sec-time\",         CA_FORMAT_WITH_SEC_TIME         },\n        { \"usec-time\",
        \       CA_FORMAT_WITH_USEC_TIME        },\n        { \"nsec-time\",        CA_FORMAT_WITH_NSEC_TIME
        \       },\n        { \"2sec-time\",        CA_FORMAT_WITH_2SEC_TIME        },\n
        \       { \"read-only\",        CA_FORMAT_WITH_READ_ONLY        },\n        {
        \"permissions\",      CA_FORMAT_WITH_PERMISSIONS      },\n        { \"symlinks\",
        \        CA_FORMAT_WITH_SYMLINKS         },\n        { \"device-nodes\",     CA_FORMAT_WITH_DEVICE_NODES
        \    },\n        { \"fifos\",            CA_FORMAT_WITH_FIFOS            },\n
        \       { \"sockets\",          CA_FORMAT_WITH_SOCKETS          },\n        {
        \"flag-hidden\",      CA_FORMAT_WITH_FLAG_HIDDEN      },\n        { \"flag-system\",
        \     CA_FORMAT_WITH_FLAG_SYSTEM      },\n        { \"flag-archive\",     CA_FORMAT_WITH_FLAG_ARCHIVE
        \    },\n        { \"flag-append\",      CA_FORMAT_WITH_FLAG_APPEND      },\n
        \       { \"flag-noatime\",     CA_FORMAT_WITH_FLAG_NOATIME     },\n        {
        \"flag-compr\",       CA_FORMAT_WITH_FLAG_COMPR       },\n        { \"flag-nocow\",
        \      CA_FORMAT_WITH_FLAG_NOCOW       },\n        { \"flag-nodump\",      CA_FORMAT_WITH_FLAG_NODUMP
        \     },\n        { \"flag-dirsync\",     CA_FORMAT_WITH_FLAG_DIRSYNC     },\n
        \       { \"flag-immutable\",   CA_FORMAT_WITH_FLAG_IMMUTABLE   },\n        {
        \"flag-sync\",        CA_FORMAT_WITH_FLAG_SYNC        },\n        { \"flag-nocomp\",
        \     CA_FORMAT_WITH_FLAG_NOCOMP      },\n        { \"flag-projinherit\",
        CA_FORMAT_WITH_FLAG_PROJINHERIT },\n        { \"subvolume\",        CA_FORMAT_WITH_SUBVOLUME
        \       },\n        { \"subvolume-ro\",     CA_FORMAT_WITH_SUBVOLUME_RO     },\n
        \       { \"xattrs\",           CA_FORMAT_WITH_XATTRS           },\n        {
        \"acl\",              CA_FORMAT_WITH_ACL              },\n        { \"selinux\",
        \         CA_FORMAT_WITH_SELINUX          },\n        { \"fcaps\",            CA_FORMAT_WITH_FCAPS
        \           },\n        { \"quota-projid\",     CA_FORMAT_WITH_QUOTA_PROJID
        \    },\n        { \"best\",             CA_FORMAT_WITH_BEST             },\n
        \       { \"unix\",             CA_FORMAT_WITH_UNIX             },\n        {
        \"fat\",              CA_FORMAT_WITH_FAT              },\n        { \"chattr\",
        \          CA_FORMAT_WITH_CHATTR           },\n        { \"fat-attrs\",        CA_FORMAT_WITH_FAT_ATTRS
        \       },\n        { \"privileged\",       CA_FORMAT_WITH_PRIVILEGED       },\n
        \       { \"fuse\",             CA_FORMAT_WITH_FUSE             },\n        {
        \"all\",              CA_FORMAT_WITH_MASK             },\n}"
      pos:
        line_end: 79
        line_start: 76
        source_file: /src/casync/src/caformat-util.c
    - fields:
      - name: feature_flag
        type: uint64_t
      - name: chattr_flag
        type: unsigned
      item_type: struct
      name: "chattr_map[] = {\n        { CA_FORMAT_WITH_FLAG_APPEND,      FS_APPEND_FL
        \     },\n        { CA_FORMAT_WITH_FLAG_NOATIME,     FS_NOATIME_FL     },\n
        \       { CA_FORMAT_WITH_FLAG_COMPR,       FS_COMPR_FL       },\n        {
        CA_FORMAT_WITH_FLAG_NOCOW,       FS_NOCOW_FL       },\n        { CA_FORMAT_WITH_FLAG_NODUMP,
        \     FS_NODUMP_FL      },\n        { CA_FORMAT_WITH_FLAG_DIRSYNC,     FS_DIRSYNC_FL
        \    },\n        { CA_FORMAT_WITH_FLAG_IMMUTABLE,   FS_IMMUTABLE_FL   },\n
        \       { CA_FORMAT_WITH_FLAG_SYNC,        FS_SYNC_FL        },\n        {
        CA_FORMAT_WITH_FLAG_NOCOMP,      FS_NOCOMP_FL      },\n        { CA_FORMAT_WITH_FLAG_PROJINHERIT,
        FS_PROJINHERIT_FL },\n}"
      pos:
        line_end: 312
        line_start: 309
        source_file: /src/casync/src/caformat-util.c
    - fields:
      - name: feature_flag
        type: uint64_t
      - name: fat_flag
        type: uint32_t
      item_type: struct
      name: "fat_attrs_map[] = {\n        { CA_FORMAT_WITH_FLAG_HIDDEN,  ATTR_HIDDEN
        },\n        { CA_FORMAT_WITH_FLAG_SYSTEM,  ATTR_SYS    },\n        { CA_FORMAT_WITH_FLAG_ARCHIVE,
        ATTR_ARCH   },\n}"
      pos:
        line_end: 351
        line_start: 348
        source_file: /src/casync/src/caformat-util.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/caprotocol-util.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mempool_alloc_tile
  - mempool_alloc0_tile
  - mempool_free_tile
  - mempool_drop
  source_file: /src/casync/src/mempool.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*next'
        type: struct pool
      - name: n_tiles
        type: unsigned
      - name: n_used
        type: unsigned
      item_type: struct
      name: pool
      pos:
        line_end: 32
        line_start: 28
        source_file: /src/casync/src/mempool.c
    typedefs: []
    union: []
- function_names:
  - ca_file_root_new
  - ca_file_root_ref
  - ca_file_root_unref
  - ca_file_root_invalidate
  source_file: /src/casync/src/cafileroot.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_digest_reset
  - ca_digest_new
  - ca_digest_free
  - ca_digest_write
  - ca_digest_read
  - ca_digest_get_size
  - ca_digest_get_type
  - ca_digest_get_name
  - ca_digest_type_size
  - ca_digest_type_to_string
  - ca_digest_type_from_string
  - ca_digest_ensure_allocated
  - ca_digest_set_type
  source_file: /src/casync/src/cadigest.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: type
        type: CaDigestType
      - name: result[CONST_MAX(SHA256_DIGEST_LENGTH, SHA512_DIGEST_LENGTH)]
        type: uint8_t
      item_type: struct
      name: CaDigest
      pos:
        line_end: 15
        line_start: 7
        source_file: /src/casync/src/cadigest.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/caencoder.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CaEncoder
      pos:
        line_end: 13
        line_start: 13
        source_file: /src/casync/src/caencoder.h
      type: CaEncoder
    union: []
- function_names: []
  source_file: /src/casync/src/signal-handler.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/udev-util.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pow_of_2
  - log_of_2
  - make_bst_inner
  - ca_make_bst
  source_file: /src/casync/src/camakebst.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_store_unrefp
  - ca_store_iterator_unrefp
  source_file: /src/casync/src/castore.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CaStore
      pos:
        line_end: 9
        line_start: 9
        source_file: /src/casync/src/castore.h
      type: CaStore
    - item_type: typedef
      name: CaStoreIterator
      pos:
        line_end: 10
        line_start: 10
        source_file: /src/casync/src/castore.h
      type: CaStoreIterator
    union: []
- function_names:
  - chunk_hash_func
  - chunk_compare_func
  - ca_chunk_collection_new
  - ca_chunk_collection_unref
  - ca_chunk_collection_usage
  - ca_chunk_collection_size
  - gc_add_chunk_id
  - ca_chunk_collection_add_index
  - ca_gc_cleanup_unused
  source_file: /src/casync/src/gc.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: n_used
        type: size_t
      - name: '*used_chunks'
        type: Set
      item_type: struct
      name: CaChunkCollection
      pos:
        line_end: 12
        line_start: 8
        source_file: /src/casync/src/gc.c
    typedefs: []
    union: []
- function_names:
  - log_info
  - log_error
  - log_debug
  - log_oom
  - assert_se
  - assert_not_reached
  source_file: /src/casync/src/log.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_digest_freep
  - ca_digest_write_u8
  - ca_digest_write_u32
  - ca_digest_write_u64
  source_file: /src/casync/src/cadigest.h
  types:
    enum:
    - enumerators:
      - name: CA_DIGEST_SHA256
      - name: CA_DIGEST_SHA512_256
      - name: CA_DIGEST_DEFAULT
        value: CA_DIGEST_SHA512_256
      - name: _CA_DIGEST_TYPE_MAX
      - name: _CA_DIGEST_TYPE_INVALID
        value: '-1'
      item_type: enum
      name: CaDigestType
      pos:
        line_end: 17
        line_start: 11
        source_file: /src/casync/src/cadigest.h
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CaDigest
      pos:
        line_end: 9
        line_start: 9
        source_file: /src/casync/src/cadigest.h
      type: CaDigest
    union: []
- function_names:
  - ca_origin_items
  - ca_origin_bytes
  source_file: /src/casync/src/caorigin.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*first'
        type: CaLocation
      - name: '**others'
        type: CaLocation
      - name: n_items
        type: size_t
      - name: n_allocated
        type: size_t
      - name: n_bytes
        type: uint64_t
      item_type: struct
      name: CaOrigin
      pos:
        line_end: 16
        line_start: 10
        source_file: /src/casync/src/caorigin.h
    typedefs: []
    union: []
- function_names:
  - ca_protocol_type_name
  source_file: /src/casync/src/caprotocol-util.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CA_INDEX_METADATA_SIZE
  - ca_index_new
  - ca_index_new_write
  - ca_index_new_read
  - ca_index_new_incremental_write
  - ca_index_new_incremental_read
  - ca_index_unref
  - ca_index_set_make_mode
  - ca_index_set_fd
  - ca_index_set_path
  - ca_index_open_fd
  - ca_index_write_head
  - ca_index_enough_data
  - ca_index_read_head
  - ca_index_open
  - ca_index_install
  - ca_index_write_chunk
  - ca_index_write_eof
  - ca_index_read_chunk
  - ca_index_set_position
  - ca_index_get_position
  - read_file_size
  - ca_index_get_available_chunks
  - ca_index_incremental_write
  - ca_index_incremental_eof
  - ca_index_incremental_read
  - ca_index_set_chunk_size_min
  - ca_index_set_chunk_size_avg
  - ca_index_set_chunk_size_max
  - ca_index_get_chunk_size_min
  - ca_index_get_chunk_size_avg
  - ca_index_get_chunk_size_max
  - ca_index_get_index_size
  - ca_index_get_total_chunks
  - ca_index_read_tail
  - ca_index_get_blob_size
  - ca_index_seek
  - ca_index_set_feature_flags
  - ca_index_get_feature_flags
  source_file: /src/casync/src/caindex.c
  types:
    enum:
    - enumerators:
      - name: CA_INDEX_WRITE
      - name: CA_INDEX_READ
      - name: CA_INDEX_INCREMENTAL_READ
      - name: CA_INDEX_INCREMENTAL_WRITE
      item_type: enum
      name: CaIndexMode
      pos:
        line_end: 24
        line_start: 19
        source_file: /src/casync/src/caindex.c
    preproc_defs: []
    structs:
    - fields:
      - name: mode
        type: CaIndexMode
      - name: open_flags
        type: int
      - name: fd
        type: int
      - name: make_mode
        type: mode_t
      - name: '*path'
        type: char
      - name: '*temporary_path'
        type: char
      - name: wrote_eof
        type: bool
      - name: start_offset
        type: uint64_t
      - name: item_position
        type: uint64_t
      - name: previous_chunk_offset
        type: uint64_t
      - name: chunk_size_min
        type: uint64_t
      - name: chunk_size_max
        type: uint64_t
      - name: chunk_size_avg
        type: uint64_t
      - name: feature_flags
        type: uint64_t
      - name: file_size
        type: uint64_t
      - name: blob_size
        type: uint64_t
      item_type: struct
      name: CaIndex
      pos:
        line_end: 50
        line_start: 26
        source_file: /src/casync/src/caindex.c
    - fields:
      - name: index
        type: CaFormatIndex
      - name: table
        type: CaFormatHeader
      item_type: struct
      name: "head = {\n                .index.header.size = htole64(sizeof(CaFormatIndex)),\n
        \               .index.header.type = htole64(CA_FORMAT_INDEX),\n                .table.size
        = htole64(UINT64_MAX),\n                .table.type = htole64(CA_FORMAT_TABLE),\n
        \       }"
      pos:
        line_end: 247
        line_start: 244
        source_file: /src/casync/src/caindex.c
    - fields:
      - name: index
        type: CaFormatIndex
      - name: table
        type: CaFormatHeader
      item_type: struct
      name: head
      pos:
        line_end: 317
        line_start: 314
        source_file: /src/casync/src/caindex.c
    - fields:
      - name: last_item
        type: CaFormatTableItem
      - name: tail
        type: CaFormatTableTail
      item_type: struct
      name: buffer = {}
      pos:
        line_end: 946
        line_start: 943
        source_file: /src/casync/src/caindex.c
    typedefs: []
    union:
    - fields:
      - name: item
        type: CaFormatTableItem
      - name: tail
        type: CaFormatTableTail
      item_type: union
      name: buffer
      pos:
        line_end: 508
        line_start: 505
        source_file: /src/casync/src/caindex.c
- function_names:
  - FOREACH_DIRENT_ALL
  source_file: /src/casync/src/dirent-util.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CA_SYNC_IS_STARTED
  - ca_sync_new
  - ca_sync_new_encode
  - ca_sync_new_decode
  - ca_sync_set_chunk_size_min
  - ca_sync_set_chunk_size_avg
  - ca_sync_set_chunk_size_max
  - ca_sync_get_chunk_size_avg
  - ca_sync_get_chunk_size_min
  - ca_sync_get_chunk_size_max
  - ca_sync_set_punch_holes
  - ca_sync_set_reflink
  - ca_sync_set_hardlink
  - ca_sync_set_delete
  - ca_sync_set_payload
  - ca_sync_set_undo_immutable
  - ca_sync_set_uid_shift
  - ca_sync_set_uid_range
  - ca_sync_reset_cache_data
  - ca_sync_unref
  - ca_sync_set_log_level
  - ca_sync_set_rate_limit_bps
  - ca_sync_set_feature_flags
  - ca_sync_get_feature_flags
  - ca_sync_get_covering_feature_flags
  - ca_sync_set_feature_flags_mask
  - ca_sync_allocate_index
  - ca_sync_set_index_fd
  - ca_sync_set_index_path
  - ca_sync_set_index_remote
  - ca_sync_set_index_auto
  - ca_sync_set_base_fd
  - ca_sync_set_base_path
  - ca_sync_set_make_mode
  - ca_sync_set_base_mode
  - ca_sync_set_boundary_fd
  - ca_sync_set_boundary_path
  - ca_sync_set_archive_fd
  - ca_sync_set_archive_path
  - ca_sync_set_archive_remote
  - ca_sync_set_archive_auto
  - ca_sync_set_store_path
  - ca_sync_set_store_remote
  - ca_sync_set_store_auto
  - ca_sync_add_store_path
  - ca_sync_add_store_remote
  - ca_sync_add_store_auto
  - ca_sync_extend_seeds_array
  - ca_sync_add_seed_fd
  - ca_sync_add_seed_path
  - ca_sync_set_cache_fd
  - ca_sync_set_cache_path
  - ca_sync_use_cache
  - ca_sync_start
  - ca_sync_write_archive
  - ca_sync_write_remote_archive
  - ca_sync_write_one_chunk
  - ca_sync_write_chunks
  - ca_sync_write_final_chunk
  - ca_sync_write_one_cached_chunk
  - ca_sync_install_archive
  - ca_sync_write_remote_archive_eof
  - ca_sync_cache_get
  - ca_sync_need_data
  - ca_sync_step_encode
  - ca_sync_shall_seed
  - ca_sync_seed_ready
  - ca_sync_process_decoder_request
  - ca_sync_install_base
  - ca_sync_reset_seek
  - ca_sync_process_decoder_seek
  - ca_sync_process_decoder_skip
  - ca_sync_try_hardlink
  - ca_sync_step_decode
  - ca_sync_current_seed
  - ca_sync_seed_step
  - ca_sync_n_remotes
  - ca_sync_current_remote
  - ca_sync_remote_prefetch
  - ca_sync_remote_push_index
  - ca_sync_remote_push_chunk
  - ca_sync_remote_step_one
  - ca_sync_remote_step
  - ca_sync_propagate_flags_to_stores
  - ca_sync_propagate_flags_to_seeds
  - ca_sync_propagate_flags_to_remotes
  - ca_sync_propagate_flags_to_decoder
  - ca_sync_propagate_index_flags
  - ca_sync_step
  - ca_sync_get_local
  - ca_sync_get
  - ca_sync_has_local
  - ca_sync_make_chunk_id
  - ca_sync_get_archive_digest
  - ca_sync_get_payload_digest
  - ca_sync_get_hardlink_digest
  - ca_sync_current_path
  - ca_sync_current_mode
  - ca_sync_current_target
  - ca_sync_current_mtime
  - ca_sync_current_size
  - ca_sync_current_uid
  - ca_sync_current_gid
  - ca_sync_current_user
  - ca_sync_current_group
  - ca_sync_current_rdev
  - ca_sync_current_chattr
  - ca_sync_current_fat_attrs
  - ca_sync_current_xattr
  - ca_sync_current_quota_projid
  - ca_sync_add_pollfd
  - ca_sync_poll
  - ca_sync_current_archive_chunks
  - ca_sync_current_archive_reused_chunks
  - ca_sync_current_archive_offset
  - ca_sync_acquire_archive_size
  - ca_sync_seek_offset
  - ca_sync_seek_path_offset
  - ca_sync_seek_path
  - ca_sync_seek_next_sibling
  - ca_sync_get_payload
  - ca_sync_get_archive_size
  - ca_sync_get_punch_holes_bytes
  - ca_sync_get_reflink_bytes
  - ca_sync_get_hardlink_bytes
  - ca_sync_enable_archive_digest
  - ca_sync_enable_payload_digest
  - ca_sync_enable_hardlink_digest
  - ca_sync_get_seed_requests
  - ca_sync_get_seed_request_bytes
  - ca_sync_get_seed_seeding_time_nsec
  - ca_sync_get_local_requests
  - ca_sync_get_local_request_bytes
  - ca_sync_get_remote_requests
  - ca_sync_get_remote_request_bytes
  - ca_sync_get_decoding_time_nsec
  - ca_sync_get_runtime_nsec
  - ca_sync_set_compression_type
  - ca_sync_current_cache_hits
  - ca_sync_current_cache_misses
  - ca_sync_current_cache_invalidated
  - ca_sync_current_cache_added
  source_file: /src/casync/src/casync.c
  types:
    enum:
    - enumerators:
      - name: CA_SYNC_ENCODE
      - name: CA_SYNC_DECODE
      item_type: enum
      name: CaDirection
      pos:
        line_end: 36
        line_start: 33
        source_file: /src/casync/src/casync.c
    - enumerators:
      - name: CA_SYNC_CACHE_OFF
      - name: CA_SYNC_CACHE_VERIFY
      - name: CA_SYNC_CACHE_SUCCEEDED
      - name: CA_SYNC_CACHE_CHECK
      - name: CA_SYNC_CACHE_FAILED
      - name: CA_SYNC_CACHE_IDLE
      item_type: enum
      name: CaCacheState
      pos:
        line_end: 46
        line_start: 39
        source_file: /src/casync/src/casync.c
    preproc_defs: []
    structs:
    - fields:
      - name: direction
        type: CaDirection
      - name: start_nsec
        type: uint64_t
      - name: '*encoder'
        type: CaEncoder
      - name: '*decoder'
        type: CaDecoder
      - name: chunker
        type: CaChunker
      - name: original_chunker
        type: CaChunker
      - name: '*index'
        type: CaIndex
      - name: '*remote_index'
        type: CaRemote
      - name: '*remote_archive'
        type: CaRemote
      - name: next_chunk
        type: CaChunkID
      - name: next_chunk_size
        type: uint64_t
      - name: next_chunk_valid
        type: bool
      - name: '*wstore'
        type: CaStore
      - name: '**rstores'
        type: CaStore
      - name: n_rstores
        type: size_t
      - name: '*cache_store'
        type: CaStore
      - name: '*remote_wstore'
        type: CaRemote
      - name: '**remote_rstores'
        type: CaRemote
      - name: n_remote_rstores
        type: size_t
      - name: current_remote
        type: size_t
      - name: '**seeds'
        type: CaSeed
      - name: n_seeds
        type: size_t
      - name: current_seed
        type: size_t
      - name: index_flags_propagated
        type: bool
      - name: '*cache'
        type: CaCache
      - name: cache_state
        type: CaCacheState
      - name: current_cache_chunk_id
        type: CaChunkID
      - name: current_cache_chunk_size
        type: uint64_t
      - name: '*current_cache_origin'
        type: CaOrigin
      - name: '*current_cache_start_location'
        type: CaLocation
      - name: base_fd
        type: int
      - name: boundary_fd
        type: int
      - name: archive_fd
        type: int
      - name: '*base_path'
        type: char
      - name: '*boundary_path'
        type: char
      - name: '*archive_path'
        type: char
      - name: base_mode
        type: mode_t
      - name: make_mode
        type: mode_t
      - name: buffer
        type: ReallocBuffer
      - name: index_buffer
        type: ReallocBuffer
      - name: archive_buffer
        type: ReallocBuffer
      - name: compress_buffer
        type: ReallocBuffer
      - name: '*buffer_origin'
        type: CaOrigin
      - name: '*chunk_digest'
        type: CaDigest
      - name: archive_eof
        type: bool
      - name: remote_index_eof
        type: bool
      - name: log_level
        type: int
      - name: rate_limit_bps
        type: size_t
      - name: feature_flags
        type: uint64_t
      - name: feature_flags_mask
        type: uint64_t
      - name: n_written_chunks
        type: uint64_t
      - name: n_reused_chunks
        type: uint64_t
      - name: n_prefetched_chunks
        type: uint64_t
      - name: n_cache_hits
        type: uint64_t
      - name: n_cache_misses
        type: uint64_t
      - name: n_cache_invalidated
        type: uint64_t
      - name: n_cache_added
        type: uint64_t
      - name: archive_size
        type: uint64_t
      - name: chunk_skip
        type: uint64_t
      - name: punch_holes
        type: bool
      - name: reflink
        type: bool
      - name: hardlink
        type: bool
      - name: delete
        type: bool
      - name: payload
        type: bool
      - name: undo_immutable
        type: bool
      - name: archive_digest
        type: bool
      - name: hardlink_digest
        type: bool
      - name: payload_digest
        type: bool
      - name: '*archive_root'
        type: CaFileRoot
      - name: uid_shift
        type: uid_t
      - name: uid_range
        type: uid_t
      - name: chunk_size_min
        type: uint64_t
      - name: chunk_size_avg
        type: uint64_t
      - name: chunk_size_max
        type: uint64_t
      - name: compression_type
        type: CaCompressionType
      - name: first_chunk_request_nsec
        type: uint64_t
      - name: last_chunk_request_nsec
        type: uint64_t
      item_type: struct
      name: CaSync
      pos:
        line_end: 155
        line_start: 48
        source_file: /src/casync/src/casync.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/caformat-util.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CA_DECODER_IS_SEEKING
  - CA_DECODER_AT_ROOT
  - CA_DECODER_IS_NAKED
  - ca_decoder_node_mode
  - ca_decoder_new
  - ca_decoder_node_free_xattrs
  - ca_decoder_node_free_acl_entries
  - ca_decoder_node_flush_entry
  - ca_decoder_node_free
  - ca_decoder_flush_nodes
  - ca_decoder_unref
  - ca_decoder_set_expected_feature_flags
  - ca_decoder_set_feature_flags_mask
  - ca_decoder_get_feature_flags
  - ca_decoder_set_base_fd
  - ca_decoder_set_boundary_fd
  - ca_decoder_set_base_mode
  - ca_decoder_current_node
  - ca_decoder_current_parent_node
  - ca_decoder_forget_children
  - ca_decoder_init_child
  - ca_decoder_enter_child
  - ca_decoder_enter_state
  - ca_decoder_leave_child
  - ca_decoder_object_is_complete
  - ca_decoder_determine_replay_feature_flags
  - validate_filename
  - validate_mode
  - validate_uid_gid
  - validate_entry_flags
  - validate_major
  - validate_minor
  - validate_nsec
  - validate_user_group_name
  - validate_symlink_target
  - validate_feature_flags
  - validate_format_entry
  - validate_format_user
  - validate_format_group
  - validate_format_xattr
  - validate_acl_permissions
  - validate_format_acl_user
  - validate_format_acl_group
  - validate_format_acl_group_obj
  - validate_format_acl_default
  - validate_format_selinux
  - validate_format_fcaps
  - validate_format_quota_projid
  - validate_format_symlink
  - validate_format_device
  - validate_format_payload
  - validate_format_filename
  - CA_FORMAT_GOODBYE_TO_TAIL
  - validate_format_goodbye
  - compare_format_acl_user
  - compare_format_acl_group
  - format_goodbye_search_inner
  - format_goodbye_items
  - format_goodbye_search
  - path_get_component
  - path_match_component
  - ca_decoder_do_seek
  - ca_decoder_write_digest
  - ca_decoder_parse_entry
  - ca_decoder_reset_seek
  - ca_decoder_parse_filename
  - ca_decoder_parse_goodbye_tail
  - ca_decoder_node_get_fd
  - mkdir_or_mksubvol
  - ca_decoder_realize_child
  - ca_decoder_shift_uid
  - ca_decoder_shift_gid
  - name_to_uid
  - name_to_gid
  - acl_add_entry_full
  - ca_decoder_acl_add_user_entries
  - ca_decoder_acl_add_group_entries
  - mode_user_to_acl_permissions
  - mode_group_to_acl_permissions
  - mode_other_to_acl_permissions
  - ca_decoder_child_to_acl
  - ca_decoder_child_to_default_acl
  - ca_decoder_node_reflink
  - comparison_fn_strcmpp
  - safe_bsearch
  - ca_decoder_node_delete
  - drop_immutable
  - ca_decoder_install_file
  - ca_decoder_finalize_child
  - ca_decoder_apply_seek_offset
  - ca_decoder_step_node
  - ca_decoder_advance_buffer
  - ca_decoder_step
  - ca_decoder_get_request_offset
  - ca_decoder_put_data
  - ca_decoder_put_eof
  - ca_decoder_get_payload
  - ca_decoder_current_path
  - ca_decoder_current_mode
  - ca_decoder_current_target
  - ca_decoder_current_mtime
  - ca_decoder_current_size
  - ca_decoder_current_uid
  - ca_decoder_current_gid
  - ca_decoder_current_user
  - ca_decoder_current_group
  - ca_decoder_current_rdev
  - ca_decoder_current_chattr
  - ca_decoder_current_fat_attrs
  - ca_decoder_current_xattr
  - ca_decoder_current_quota_projid
  - ca_decoder_current_offset
  - ca_decoder_seek_offset
  - ca_decoder_seek_path_internal
  - ca_decoder_seek_path
  - ca_decoder_seek_path_offset
  - ca_decoder_seek_next_sibling
  - ca_decoder_get_seek_offset
  - ca_decoder_get_skip_size
  - ca_decoder_set_archive_size
  - ca_decoder_set_punch_holes
  - ca_decoder_set_reflink
  - ca_decoder_set_hardlink
  - ca_decoder_set_delete
  - ca_decoder_set_payload
  - ca_decoder_set_undo_immutable
  - ca_decoder_get_punch_holes_bytes
  - ca_decoder_get_reflink_bytes
  - ca_decoder_get_hardlink_bytes
  - ca_decoder_set_uid_shift
  - ca_decoder_set_uid_range
  - ca_decoder_current_archive_offset
  - ca_decoder_enable_archive_digest
  - ca_decoder_enable_payload_digest
  - ca_decoder_enable_hardlink_digest
  - ca_decoder_get_archive_digest
  - ca_decoder_get_payload_digest
  - ca_decoder_get_hardlink_digest
  - ca_decoder_mode_mask
  - ca_decoder_try_hardlink
  source_file: /src/casync/src/cadecoder.c
  types:
    enum:
    - enumerators:
      - name: CA_DECODER_ENTERED
      - name: CA_DECODER_IN_DIRECTORY
      - name: CA_DECODER_PREPARING_SEEK_TO_OFFSET
      - name: CA_DECODER_PREPARING_SEEK_TO_ENTRY
      - name: CA_DECODER_PREPARING_SEEK_TO_GOODBYE
      - name: CA_DECODER_NOWHERE
      - name: CA_DECODER_IN_PAYLOAD
      - name: CA_DECODER_EOF
      - name: CA_DECODER_SEEKING_TO_PAYLOAD
      - name: CA_DECODER_PREPARING_SEEK_TO_FILENAME
      - name: CA_DECODER_SEEKING_TO_NEXT_SIBLING
      - name: CA_DECODER_SEEKING_TO_GOODBYE_TAIL
      - name: CA_DECODER_INIT
      - name: CA_DECODER_ENTRY
      - name: CA_DECODER_FINALIZE
      - name: CA_DECODER_SEEKING_TO_OFFSET
      - name: CA_DECODER_PREPARING_SEEK_TO_NEXT_SIBLING
      - name: CA_DECODER_PREPARING_SEEK_TO_PAYLOAD
      - name: CA_DECODER_PREPARING_SEEK_TO_GOODBYE_TAIL
      - name: CA_DECODER_ENTERED_FOR_SEEK
      - name: CA_DECODER_GOODBYE
      - name: CA_DECODER_SEEKING_TO_FILENAME
      - name: CA_DECODER_SEEKING_TO_ENTRY
      - name: CA_DECODER_SEEKING_TO_GOODBYE
      - name: CA_DECODER_SKIPPING
      item_type: enum
      name: CaDecoderState
      pos:
        line_end: 158
        line_start: 127
        source_file: /src/casync/src/cadecoder.c
    preproc_defs:
    - item_type: preproc_def
      name: APPLY_EARLY_FS_FL
      pos:
        line_end: 55
        line_start: 49
        source_file: /src/casync/src/cadecoder.c
      type_or_value: "(FS_NOATIME_FL|                         \\\n         FS_COMPR_FL|
        \                          \\\n         FS_NOCOW_FL|                           \\\n
        \        FS_NOCOMP_FL|                          \\\n         FS_PROJINHERIT_FL)"
    structs:
    - fields:
      - name: '*next'
        type: struct CaDecoderExtendedAttribute
      - name: '*previous'
        type: struct CaDecoderExtendedAttribute
      - name: format
        type: CaFormatXAttr
      item_type: struct
      name: CaDecoderExtendedAttribute
      pos:
        line_end: 60
        line_start: 56
        source_file: /src/casync/src/cadecoder.c
    - fields:
      - name: '*next'
        type: struct CaDecoderACLEntry
      item_type: struct
      name: CaDecoderACLEntry
      pos:
        line_end: 68
        line_start: 62
        source_file: /src/casync/src/cadecoder.c
    - fields:
      - name: fd
        type: int
      - name: entry_offset
        type: uint64_t
      - name: payload_offset
        type: uint64_t
      - name: goodbye_offset
        type: uint64_t
      - name: end_offset
        type: uint64_t
      - name: '*name'
        type: char
      - name: '*temporary_name'
        type: char
      - name: '*entry'
        type: CaFormatEntry
      - name: '*goodbye'
        type: CaFormatGoodbye
      - name: mode
        type: mode_t
      - name: size
        type: uint64_t
      - name: '*user_name'
        type: char
      - name: '*group_name'
        type: char
      - name: '*symlink_target'
        type: char
      - name: rdev
        type: dev_t
      - name: '*selinux_label'
        type: char
      - name: '*xattrs_first'
        type: CaDecoderExtendedAttribute
      - name: '*xattrs_last'
        type: CaDecoderExtendedAttribute
      - name: '*xattrs_current'
        type: CaDecoderExtendedAttribute
      - name: have_fcaps
        type: bool
      - name: '*fcaps'
        type: void
      - name: fcaps_size
        type: size_t
      - name: have_acl
        type: bool
      - name: '*acl_user'
        type: CaDecoderACLEntry
      - name: '*acl_group'
        type: CaDecoderACLEntry
      - name: '*acl_default_user'
        type: CaDecoderACLEntry
      - name: '*acl_default_group'
        type: CaDecoderACLEntry
      - name: acl_group_obj_permissions
        type: uint64_t
      - name: acl_default_user_obj_permissions
        type: uint64_t
      - name: acl_default_group_obj_permissions
        type: uint64_t
      - name: acl_default_other_permissions
        type: uint64_t
      - name: acl_default_mask_permissions
        type: uint64_t
      - name: have_quota_projid
        type: bool
      - name: quota_projid
        type: uint32_t
      - name: '*payload_origin'
        type: CaOrigin
      - name: '**dirents'
        type: char
      - name: n_dirents
        type: size_t
      - name: n_dirents_allocated
        type: size_t
      - name: dirents_invalid
        type: bool
      - name: hardlinked
        type: bool
      item_type: struct
      name: CaDecoderNode
      pos:
        line_end: 125
        line_start: 70
        source_file: /src/casync/src/cadecoder.c
    - fields:
      - name: state
        type: CaDecoderState
      - name: feature_flags
        type: uint64_t
      - name: replay_feature_flags
        type: uint64_t
      - name: expected_feature_flags
        type: uint64_t
      - name: feature_flags_mask
        type: uint64_t
      - name: nodes[NODES_MAX]
        type: CaDecoderNode
      - name: n_nodes
        type: size_t
      - name: node_idx
        type: size_t
      - name: boundary_node_idx
        type: size_t
      - name: buffer
        type: ReallocBuffer
      - name: '*buffer_origin'
        type: CaOrigin
      - name: eof
        type: bool
      - name: archive_offset
        type: uint64_t
      - name: payload_offset
        type: uint64_t
      - name: step_size
        type: uint64_t
      - name: '*seek_path'
        type: char
      - name: '*seek_subpath'
        type: char
      - name: seek_next_sibling
        type: bool
      - name: seek_idx
        type: uint64_t
      - name: seek_offset
        type: uint64_t
      - name: seek_end_offset
        type: uint64_t
      - name: seek_payload
        type: uint64_t
      - name: skip_bytes
        type: uint64_t
      - name: cached_uid
        type: uid_t
      - name: cached_gid
        type: gid_t
      - name: '*cached_user_name'
        type: char
      - name: '*cached_group_name'
        type: char
      - name: cached_st_dev
        type: dev_t
      - name: cached_magic
        type: statfs_f_type_t
      - name: boundary_fd
        type: int
      - name: punch_holes
        type: bool
      - name: reflink
        type: bool
      - name: hardlink
        type: bool
      - name: delete
        type: bool
      - name: payload
        type: bool
      - name: undo_immutable
        type: bool
      - name: n_punch_holes_bytes
        type: uint64_t
      - name: n_reflink_bytes
        type: uint64_t
      - name: n_hardlink_bytes
        type: uint64_t
      - name: uid_shift
        type: uid_t
      - name: uid_range
        type: uid_t
      - name: '*archive_digest'
        type: CaDigest
      - name: '*payload_digest'
        type: CaDigest
      - name: '*hardlink_digest'
        type: CaDigest
      - name: want_archive_digest
        type: bool
      - name: want_payload_digest
        type: bool
      - name: want_hardlink_digest
        type: bool
      - name: payload_digest_invalid
        type: bool
      - name: hardlink_digest_invalid
        type: bool
      item_type: struct
      name: CaDecoder
      pos:
        line_end: 237
        line_start: 160
        source_file: /src/casync/src/cadecoder.c
    typedefs: []
    union: []
- function_names:
  - ca_store_new
  - ca_store_new_cache
  - ca_store_unref
  - ca_store_set_path
  - ca_store_set_compression
  - ca_store_set_compression_type
  - ca_store_get
  - ca_store_has
  - ca_store_put
  - ca_store_get_requests
  - ca_store_get_request_bytes
  - ca_store_set_digest_type
  - ca_store_iterator_new
  - ca_store_iterator_unref
  - ca_store_iterator_next
  source_file: /src/casync/src/castore.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*root'
        type: char
      - name: is_cache
        type: bool
      - name: mkdir_done
        type: bool
      - name: buffer
        type: ReallocBuffer
      - name: digest_type
        type: CaDigestType
      - name: validate_buffer
        type: ReallocBuffer
      - name: '*validate_digest'
        type: CaDigest
      - name: compression
        type: CaChunkCompression
      - name: compression_type
        type: CaCompressionType
      - name: n_requests
        type: uint64_t
      - name: n_request_bytes
        type: uint64_t
      item_type: struct
      name: CaStore
      pos:
        line_end: 35
        line_start: 20
        source_file: /src/casync/src/castore.c
    - fields:
      - name: '*store'
        type: CaStore
      - name: '*rootdir'
        type: DIR
      - name: '*subdir_de'
        type: struct dirent
      - name: '*subdir'
        type: DIR
      item_type: struct
      name: CaStoreIterator
      pos:
        line_end: 43
        line_start: 37
        source_file: /src/casync/src/castore.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/cadecoder.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CaDecoder
      pos:
        line_end: 14
        line_start: 14
        source_file: /src/casync/src/cadecoder.h
      type: CaDecoder
    union: []
- function_names: []
  source_file: /src/casync/src/cachunk.h
  types:
    enum:
    - enumerators:
      - name: CA_CHUNK_UNCOMPRESSED
      - name: _CA_CHUNK_COMPRESSION_MAX
      - name: CA_CHUNK_AS_IS
      - name: CA_CHUNK_COMPRESSED
      item_type: enum
      name: CaChunkCompression
      pos:
        line_end: 18
        line_start: 13
        source_file: /src/casync/src/cachunk.h
    preproc_defs:
    - item_type: preproc_def
      name: CA_CHUNK_SIZE_LIMIT_MAX
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/casync/src/cachunk.h
      type_or_value: ((size_t) (128U*1024U*1024U))
    - item_type: preproc_def
      name: CA_CHUNK_SIZE_LIMIT_MIN
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/casync/src/cachunk.h
      type_or_value: ((size_t) 1)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/camakebst.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/cacache.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CaCache
      pos:
        line_end: 14
        line_start: 14
        source_file: /src/casync/src/cacache.h
      type: CaCache
    union: []
- function_names: []
  source_file: /src/casync/src/cafileroot.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: n_ref
        type: unsigned
      - name: '*path'
        type: char
      - name: fd
        type: int
      - name: invalidated
        type: bool
      item_type: struct
      name: CaFileRoot
      pos:
        line_end: 12
        line_start: 7
        source_file: /src/casync/src/cafileroot.h
    typedefs: []
    union: []
- function_names:
  - realloc_buffer_acquire
  - realloc_buffer_acquire0
  - realloc_buffer_extend
  - realloc_buffer_extend0
  - realloc_buffer_append
  - realloc_buffer_free
  - realloc_buffer_advance
  - realloc_buffer_shorten
  - realloc_buffer_truncate
  - realloc_buffer_read_size
  - realloc_buffer_read_full
  - realloc_buffer_read_target
  - realloc_buffer_steal
  - realloc_buffer_donate
  - realloc_buffer_write
  - realloc_buffer_write_maybe
  - realloc_buffer_printf
  - realloc_buffer_memchr
  source_file: /src/casync/src/realloc-buffer.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REALLOC_BUFFER_MAX
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/casync/src/realloc-buffer.c
      type_or_value: (1024UL*1024LU*1024LU)
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_index_unrefp
  source_file: /src/casync/src/caindex.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CaIndex
      pos:
        line_end: 8
        line_start: 8
        source_file: /src/casync/src/caindex.h
      type: CaIndex
    union: []
- function_names:
  - ca_load_fd
  - ca_load_and_decompress_fd
  - ca_load_and_compress_fd
  - ca_save_fd
  - ca_save_and_compress_fd
  - ca_save_and_decompress_fd
  - ca_compress
  - ca_decompress
  - ca_chunk_file_open
  - ca_chunk_file_access
  - ca_chunk_file_unlink
  - ca_chunk_file_rename
  - ca_chunk_file_load
  - ca_chunk_file_save
  - ca_chunk_file_mark_missing
  - ca_chunk_file_test
  - ca_chunk_file_remove
  source_file: /src/casync/src/cachunk.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - parse_size
  - format_bytes
  source_file: /src/casync/src/parse-util.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*suffix'
        type: char
      - name: factor
        type: unsigned long long
      item_type: struct
      name: table
      pos:
        line_end: 19
        line_start: 16
        source_file: /src/casync/src/parse-util.c
    - fields:
      - name: '*suffix'
        type: char
      - name: factor
        type: uint64_t
      item_type: struct
      name: "table[] = {\n                { \"E\", UINT64_C(1024)*UINT64_C(1024)*UINT64_C(1024)*UINT64_C(1024)*UINT64_C(1024)*UINT64_C(1024)
        },\n                { \"P\", UINT64_C(1024)*UINT64_C(1024)*UINT64_C(1024)*UINT64_C(1024)*UINT64_C(1024)
        },\n                { \"T\", UINT64_C(1024)*UINT64_C(1024)*UINT64_C(1024)*UINT64_C(1024)
        },\n                { \"G\", UINT64_C(1024)*UINT64_C(1024)*UINT64_C(1024)
        },\n                { \"M\", UINT64_C(1024)*UINT64_C(1024) },\n                {
        \"K\", UINT64_C(1024) },\n        }"
      pos:
        line_end: 117
        line_start: 114
        source_file: /src/casync/src/parse-util.c
    typedefs: []
    union: []
- function_names:
  - new
  - new0
  - newa
  - XCONCATENATE
  - CONCATENATE
  - UNIQ_T
  - MAX
  - __MAX
  - MAX3
  - MIN
  - __MIN
  - CONST_MAX
  - mfree
  - safe_close_above
  - safe_close
  - safe_closep
  - safe_close_nonstdp
  - safe_fclose
  - safe_fclosep
  - read_le64
  - read_le32
  - read_le16
  - write_le64
  - write_le32
  - write_le16
  - memdup
  - random_u64
  - random_bytes
  - assert_cc
  - CASE_F
  - CASE_F_1
  - CASE_F_2
  - CASE_F_3
  - CASE_F_4
  - CASE_F_5
  - CASE_F_6
  - CASE_F_7
  - CASE_F_8
  - CASE_F_9
  - CASE_F_10
  - CASE_F_11
  - CASE_F_12
  - CASE_F_13
  - CASE_F_14
  - CASE_F_15
  - CASE_F_16
  - CASE_F_17
  - CASE_F_18
  - CASE_F_19
  - CASE_F_20
  - GET_CASE_F
  - FOR_EACH_MAKE_CASE
  - IN_SET
  - isempty
  - strempty
  - strnone
  - streq
  - streq_ptr
  - strna
  - strjoin
  - safe_atou64
  - safe_atou32
  - safe_atox64
  - strjoina
  - ELEMENTSOF
  - strv_contains
  - size_multiply_overflow
  - malloc_multiply
  - realloc_multiply
  - STRV_FOREACH
  - dot_or_dot_dot
  - gid_is_valid
  - parse_gid
  - safe_close_pair
  - startswith
  - strv_isempty
  - renameat2
  - strlen_null
  - STRV_MAKE
  - FOREACH_STRING
  - STR_IN_SET
  - empty_or_dash_to_null
  - ALIGN_TO
  - PAGE_ALIGN
  - ALIGN8
  - ALIGN
  - strcaseeq
  - F_TYPE_EQUAL
  - is_fs_type
  - is_temporary_fs
  - IS_POWER_OF_TWO
  - yes_no
  - PTR_TO_INT
  - INT_TO_PTR
  - PTR_TO_UINT
  - UINT_TO_PTR
  - GREEDY_REALLOC
  - GREEDY_REALLOC0
  - alloca0
  - memzero
  - zero
  - malloc0
  - mempset
  - DECIMAL_STR_MAX
  - SOCKADDR_UN_LEN
  - rol32
  - log2u
  - log2u_round_up
  - path_is_absolute
  - _cleanup_
  - DEFINE_TRIVIAL_CLEANUP_FUNC
  - freep
  - unlink_and_free
  - ERRNO_IS_UNSUPPORTED
  source_file: /src/casync/src/util.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: UNIQ
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/casync/src/util.h
      type_or_value: __COUNTER__
    - item_type: preproc_def
      name: LS_FORMAT_MODE_MAX
      pos:
        line_end: 269
        line_start: 268
        source_file: /src/casync/src/util.h
      type_or_value: (1+3+3+3+1)
    - item_type: preproc_def
      name: LS_FORMAT_CHATTR_MAX
      pos:
        line_end: 272
        line_start: 271
        source_file: /src/casync/src/util.h
      type_or_value: '11'
    - item_type: preproc_def
      name: LS_FORMAT_FAT_ATTRS_MAX
      pos:
        line_end: 275
        line_start: 274
        source_file: /src/casync/src/util.h
      type_or_value: '4'
    - item_type: preproc_def
      name: WHITESPACE
      pos:
        line_end: 314
        line_start: 313
        source_file: /src/casync/src/util.h
      type_or_value: '" \t"'
    - item_type: preproc_def
      name: NEWLINE
      pos:
        line_end: 315
        line_start: 314
        source_file: /src/casync/src/util.h
      type_or_value: '"\n\r"'
    - item_type: preproc_def
      name: UID_FMT
      pos:
        line_end: 376
        line_start: 375
        source_file: /src/casync/src/util.h
      type_or_value: '"%" PRIu32'
    - item_type: preproc_def
      name: UID_FMT
      pos:
        line_end: 378
        line_start: 377
        source_file: /src/casync/src/util.h
      type_or_value: '"%" PRIu16'
    - item_type: preproc_def
      name: GID_FMT
      pos:
        line_end: 384
        line_start: 383
        source_file: /src/casync/src/util.h
      type_or_value: '"%" PRIu32'
    - item_type: preproc_def
      name: GID_FMT
      pos:
        line_end: 386
        line_start: 385
        source_file: /src/casync/src/util.h
      type_or_value: '"%" PRIu16'
    - item_type: preproc_def
      name: PID_PRI
      pos:
        line_end: 392
        line_start: 391
        source_file: /src/casync/src/util.h
      type_or_value: PRIi32
    - item_type: preproc_def
      name: PID_PRI
      pos:
        line_end: 394
        line_start: 393
        source_file: /src/casync/src/util.h
      type_or_value: PRIi16
    - item_type: preproc_def
      name: PID_FMT
      pos:
        line_end: 398
        line_start: 397
        source_file: /src/casync/src/util.h
      type_or_value: '"%" PID_PRI'
    - item_type: preproc_def
      name: UID_INVALID
      pos:
        line_end: 412
        line_start: 411
        source_file: /src/casync/src/util.h
      type_or_value: ((uid_t) -1)
    - item_type: preproc_def
      name: GID_INVALID
      pos:
        line_end: 413
        line_start: 412
        source_file: /src/casync/src/util.h
      type_or_value: ((gid_t) -1)
    - item_type: preproc_def
      name: ALPHABET_LOWER
      pos:
        line_end: 415
        line_start: 414
        source_file: /src/casync/src/util.h
      type_or_value: '"abcdefghijklmnopqrstuvwxyz"'
    - item_type: preproc_def
      name: ALPHABET_UPPER
      pos:
        line_end: 416
        line_start: 415
        source_file: /src/casync/src/util.h
      type_or_value: '"ABCDEFGHIJKLMNOPQRSTUVWXYZ"'
    - item_type: preproc_def
      name: ALPHABET
      pos:
        line_end: 417
        line_start: 416
        source_file: /src/casync/src/util.h
      type_or_value: ALPHABET_LOWER ALPHABET_UPPER
    - item_type: preproc_def
      name: DIGITS
      pos:
        line_end: 418
        line_start: 417
        source_file: /src/casync/src/util.h
      type_or_value: '"0123456789"'
    - item_type: preproc_def
      name: HEXDIGITS
      pos:
        line_end: 419
        line_start: 418
        source_file: /src/casync/src/util.h
      type_or_value: DIGITS "ABCDEF" "abcdef"
    - item_type: preproc_def
      name: URL_PROTOCOL_FIRST
      pos:
        line_end: 422
        line_start: 421
        source_file: /src/casync/src/util.h
      type_or_value: ALPHABET_LOWER
    - item_type: preproc_def
      name: URL_PROTOCOL_CHARSET
      pos:
        line_end: 423
        line_start: 422
        source_file: /src/casync/src/util.h
      type_or_value: ALPHABET_LOWER DIGITS "+.-"
    - item_type: preproc_def
      name: HOSTNAME_CHARSET
      pos:
        line_end: 424
        line_start: 423
        source_file: /src/casync/src/util.h
      type_or_value: ALPHABET DIGITS "-_.%"
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 453
        line_start: 452
        source_file: /src/casync/src/util.h
      type_or_value: '316'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 455
        line_start: 454
        source_file: /src/casync/src/util.h
      type_or_value: '510'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 457
        line_start: 456
        source_file: /src/casync/src/util.h
      type_or_value: '382'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 459
        line_start: 458
        source_file: /src/casync/src/util.h
      type_or_value: '276'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 461
        line_start: 460
        source_file: /src/casync/src/util.h
      type_or_value: '337'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 463
        line_start: 462
        source_file: /src/casync/src/util.h
      type_or_value: '1338'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 465
        line_start: 464
        source_file: /src/casync/src/util.h
      type_or_value: '351'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 468
        line_start: 467
        source_file: /src/casync/src/util.h
      type_or_value: '4351'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 471
        line_start: 470
        source_file: /src/casync/src/util.h
      type_or_value: '6315'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 474
        line_start: 473
        source_file: /src/casync/src/util.h
      type_or_value: '5311'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 477
        line_start: 476
        source_file: /src/casync/src/util.h
      type_or_value: '353'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 479
        line_start: 478
        source_file: /src/casync/src/util.h
      type_or_value: '357'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 481
        line_start: 480
        source_file: /src/casync/src/util.h
      type_or_value: '347'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 483
        line_start: 482
        source_file: /src/casync/src/util.h
      type_or_value: '371'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 485
        line_start: 484
        source_file: /src/casync/src/util.h
      type_or_value: '382'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 487
        line_start: 486
        source_file: /src/casync/src/util.h
      type_or_value: '345'
    - item_type: preproc_def
      name: __NR_renameat2
      pos:
        line_end: 489
        line_start: 488
        source_file: /src/casync/src/util.h
      type_or_value: '276'
    - item_type: preproc_def
      name: RENAME_NOREPLACE
      pos:
        line_end: 506
        line_start: 505
        source_file: /src/casync/src/util.h
      type_or_value: (1 << 0)
    - item_type: preproc_def
      name: XFS_SUPER_MAGIC
      pos:
        line_end: 574
        line_start: 573
        source_file: /src/casync/src/util.h
      type_or_value: '0x58465342'
    - item_type: preproc_def
      name: CONFIGFS_MAGIC
      pos:
        line_end: 578
        line_start: 577
        source_file: /src/casync/src/util.h
      type_or_value: '0x62656570'
    - item_type: preproc_def
      name: MQUEUE_MAGIC
      pos:
        line_end: 582
        line_start: 581
        source_file: /src/casync/src/util.h
      type_or_value: '0x19800202'
    - item_type: preproc_def
      name: RPCAUTH_GSSMAGIC
      pos:
        line_end: 586
        line_start: 585
        source_file: /src/casync/src/util.h
      type_or_value: '0x67596969'
    - item_type: preproc_def
      name: NFSD_MAGIC
      pos:
        line_end: 590
        line_start: 589
        source_file: /src/casync/src/util.h
      type_or_value: '0x6e667364'
    - item_type: preproc_def
      name: FUSE_CTL_SUPER_MAGIC
      pos:
        line_end: 594
        line_start: 593
        source_file: /src/casync/src/util.h
      type_or_value: '0x65735543'
    - item_type: preproc_def
      name: CGROUP2_SUPER_MAGIC
      pos:
        line_end: 598
        line_start: 597
        source_file: /src/casync/src/util.h
      type_or_value: '0x63677270'
    - item_type: preproc_def
      name: FUSE_SUPER_MAGIC
      pos:
        line_end: 602
        line_start: 601
        source_file: /src/casync/src/util.h
      type_or_value: '0x65735546'
    - item_type: preproc_def
      name: FICLONERANGE
      pos:
        line_end: 613
        line_start: 612
        source_file: /src/casync/src/util.h
      type_or_value: _IOW(0x94, 13, struct file_clone_range)
    - item_type: preproc_def
      name: FS_PROJINHERIT_FL
      pos:
        line_end: 692
        line_start: 691
        source_file: /src/casync/src/util.h
      type_or_value: '0x20000000'
    - item_type: preproc_def
      name: RENAME_EXCHANGE
      pos:
        line_end: 696
        line_start: 695
        source_file: /src/casync/src/util.h
      type_or_value: (1 << 1)
    - item_type: preproc_def
      name: BTRFS_IOC_SUBVOL_GETFLAGS
      pos:
        line_end: 715
        line_start: 714
        source_file: /src/casync/src/util.h
      type_or_value: _IOR(BTRFS_IOCTL_MAGIC, 25, __u64)
    - item_type: preproc_def
      name: BTRFS_IOC_SUBVOL_SETFLAGS
      pos:
        line_end: 719
        line_start: 718
        source_file: /src/casync/src/util.h
      type_or_value: _IOW(BTRFS_IOCTL_MAGIC, 26, __u64)
    - item_type: preproc_def
      name: FS_IOC_FSGETXATTR
      pos:
        line_end: 731
        line_start: 730
        source_file: /src/casync/src/util.h
      type_or_value: _IOR ('X', 31, struct fsxattr)
    - item_type: preproc_def
      name: FS_IOC_FSSETXATTR
      pos:
        line_end: 732
        line_start: 731
        source_file: /src/casync/src/util.h
      type_or_value: _IOW ('X', 32, struct fsxattr)
    - item_type: preproc_def
      name: _cleanup_free_
      pos:
        line_end: 750
        line_start: 749
        source_file: /src/casync/src/util.h
      type_or_value: _cleanup_(freep)
    - item_type: preproc_def
      name: LARGE_LINE_MAX
      pos:
        line_end: 776
        line_start: 775
        source_file: /src/casync/src/util.h
      type_or_value: (64U*1024U)
    structs:
    - fields:
      - name: src_fd
        type: int64_t
      - name: src_offset
        type: uint64_t
      - name: src_length
        type: uint64_t
      - name: dest_offset
        type: uint64_t
      item_type: struct
      name: file_clone_range
      pos:
        line_end: 610
        line_start: 605
        source_file: /src/casync/src/util.h
    - fields:
      - name: fsx_xflags
        type: uint32_t
      - name: fsx_extsize
        type: uint32_t
      - name: fsx_nextents
        type: uint32_t
      - name: fsx_projid
        type: uint32_t
      - name: fsx_cowextsize
        type: uint32_t
      - name: fsx_pad[8]
        type: uint8_t
      item_type: struct
      name: fsxattr
      pos:
        line_end: 729
        line_start: 722
        source_file: /src/casync/src/util.h
    typedefs:
    - item_type: typedef
      name: le16_t
      pos:
        line_end: 117
        line_start: 117
        source_file: /src/casync/src/util.h
      type: uint16_t
    - item_type: typedef
      name: le32_t
      pos:
        line_end: 118
        line_start: 118
        source_file: /src/casync/src/util.h
      type: uint32_t
    - item_type: typedef
      name: le64_t
      pos:
        line_end: 119
        line_start: 119
        source_file: /src/casync/src/util.h
      type: uint64_t
    - item_type: typedef
      name: (((struct statfs*)NULL)->f_type)
      pos:
        line_end: 550
        line_start: 550
        source_file: /src/casync/src/util.h
      type: typeof
    union: []
- function_names:
  - copy_file_range
  - try_copy_file_range
  - copy_bytes
  source_file: /src/casync/src/copy.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: __NR_copy_file_range
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/casync/src/copy.c
      type_or_value: '326'
    - item_type: preproc_def
      name: __NR_copy_file_range
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/casync/src/copy.c
      type_or_value: '377'
    - item_type: preproc_def
      name: __NR_copy_file_range
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/casync/src/copy.c
      type_or_value: '375'
    - item_type: preproc_def
      name: __NR_copy_file_range
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/casync/src/copy.c
      type_or_value: '391'
    - item_type: preproc_def
      name: __NR_copy_file_range
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/casync/src/copy.c
      type_or_value: '285'
    - item_type: preproc_def
      name: __NR_copy_file_range
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/casync/src/copy.c
      type_or_value: '379'
    structs: []
    typedefs: []
    union: []
- function_names:
  - siphash24_compress_byte
  source_file: /src/casync/src/siphash24.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: v0
        type: uint64_t
      - name: v1
        type: uint64_t
      - name: v2
        type: uint64_t
      - name: v3
        type: uint64_t
      - name: padding
        type: uint64_t
      - name: inlen
        type: size_t
      item_type: struct
      name: siphash
      pos:
        line_end: 16
        line_start: 9
        source_file: /src/casync/src/siphash24.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/notify.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/casync.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CaSync
      pos:
        line_end: 13
        line_start: 13
        source_file: /src/casync/src/casync.h
      type: CaSync
    union: []
- function_names:
  - string_hash_func
  - string_compare_func
  - trivial_hash_func
  - trivial_compare_func
  - uint64_hash_func
  - uint64_compare_func
  source_file: /src/casync/src/hash-funcs.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - loop_write
  - loop_write_block
  - write_zeroes
  - memeqzero
  - loop_write_with_holes
  - loop_read
  - skip_bytes
  - endswith
  - getrandom
  - dev_urandom
  - octchar
  - hexchar
  - unhexchar
  - hexmem
  - filename_is_valid
  - tempfn_random
  - hexdump
  - dirname_malloc
  - strjoin_real
  - ls_format_mode
  - ls_format_chattr
  - ls_format_fat_attrs
  - safe_atoi
  - safe_atou
  - safe_atollu
  - safe_atollx
  - readlinkat_malloc
  - readlink_malloc
  - strv_free
  - strv_length
  - strv_push
  - strv_consume
  - strv_extend
  - xopendirat
  - progress
  - strextend
  - uid_is_valid
  - parse_uid
  - wait_for_terminate
  - strv_find
  - page_size
  - parse_boolean
  - getenv_bool
  - greedy_realloc
  - greedy_realloc0
  - skip_bytes_fd
  - truncate_nl
  - rename_noreplace
  - path_startswith
  - getenv_tmp_dir
  - tmp_dir_internal
  - var_tmp_dir
  - tmp_dir
  - path_is_safe
  - is_dir
  - free_and_strdup
  - read_line
  - delete_trailing_chars
  - strstrip
  source_file: /src/casync/src/util.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: HOLE_MIN
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/casync/src/util.c
      type_or_value: '4096'
    - item_type: preproc_def
      name: __NR_getrandom
      pos:
        line_end: 317
        line_start: 316
        source_file: /src/casync/src/util.c
      type_or_value: '318'
    - item_type: preproc_def
      name: __NR_getrandom
      pos:
        line_end: 319
        line_start: 318
        source_file: /src/casync/src/util.c
      type_or_value: '355'
    - item_type: preproc_def
      name: __NR_getrandom
      pos:
        line_end: 321
        line_start: 320
        source_file: /src/casync/src/util.c
      type_or_value: '384'
    - item_type: preproc_def
      name: __NR_getrandom
      pos:
        line_end: 323
        line_start: 322
        source_file: /src/casync/src/util.c
      type_or_value: '278'
    - item_type: preproc_def
      name: __NR_getrandom
      pos:
        line_end: 325
        line_start: 324
        source_file: /src/casync/src/util.c
      type_or_value: '1339'
    - item_type: preproc_def
      name: __NR_getrandom
      pos:
        line_end: 327
        line_start: 326
        source_file: /src/casync/src/util.c
      type_or_value: '352'
    - item_type: preproc_def
      name: __NR_getrandom
      pos:
        line_end: 329
        line_start: 328
        source_file: /src/casync/src/util.c
      type_or_value: '349'
    - item_type: preproc_def
      name: __NR_getrandom
      pos:
        line_end: 331
        line_start: 330
        source_file: /src/casync/src/util.c
      type_or_value: '359'
    - item_type: preproc_def
      name: __NR_getrandom
      pos:
        line_end: 334
        line_start: 333
        source_file: /src/casync/src/util.c
      type_or_value: '4353'
    - item_type: preproc_def
      name: __NR_getrandom
      pos:
        line_end: 337
        line_start: 336
        source_file: /src/casync/src/util.c
      type_or_value: '6317'
    - item_type: preproc_def
      name: __NR_getrandom
      pos:
        line_end: 340
        line_start: 339
        source_file: /src/casync/src/util.c
      type_or_value: '5313'
    - item_type: preproc_def
      name: GRND_NONBLOCK
      pos:
        line_end: 358
        line_start: 357
        source_file: /src/casync/src/util.c
      type_or_value: '0x0001'
    - item_type: preproc_def
      name: GRND_RANDOM
      pos:
        line_end: 362
        line_start: 361
        source_file: /src/casync/src/util.c
      type_or_value: '0x0002'
    structs:
    - fields:
      - name: flag
        type: unsigned
      - name: code
        type: char
      item_type: struct
      name: "table[] = {\n                { FS_SYNC_FL,        'S' },\n                {
        FS_DIRSYNC_FL,     'D' },\n                { FS_IMMUTABLE_FL,   'i' },\n                {
        FS_APPEND_FL,      'a' },\n                { FS_NODUMP_FL,      'd' },\n                {
        FS_NOATIME_FL,     'A' },\n                { FS_COMPR_FL,       'c' },\n                {
        FS_NOCOMP_FL,      'N' }, /* Not an official one, but one we made up, since
        lsattr(1) doesn't know it. Subject to change, as soon as it starts supporting
        that. */\n                { FS_NOCOW_FL,       'C' },\n                { FS_PROJINHERIT_FL,
        'P' },\n        }"
      pos:
        line_end: 687
        line_start: 684
        source_file: /src/casync/src/util.c
    - fields:
      - name: flag
        type: uint32_t
      - name: code
        type: char
      item_type: struct
      name: "table[] = {\n                { ATTR_HIDDEN, 'h' },\n                {
        ATTR_SYS,    's' },\n                { ATTR_ARCH,   'a' },\n        }"
      pos:
        line_end: 720
        line_start: 717
        source_file: /src/casync/src/util.c
    typedefs: []
    union: []
- function_names:
  - ca_compression_type_to_string
  - ca_compression_type_from_string
  source_file: /src/casync/src/cacompression.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - PTR_COMPATIBLE_WITH_HASHMAP_BASE
  - PTR_COMPATIBLE_WITH_PLAIN_HASHMAP
  - HASHMAP_BASE
  - PLAIN_HASHMAP
  - hashmap_new
  - ordered_hashmap_new
  - hashmap_free
  - ordered_hashmap_free
  - hashmap_free_free
  - ordered_hashmap_free_free
  - ordered_hashmap_free_free_free
  - hashmap_copy
  - ordered_hashmap_copy
  - hashmap_ensure_allocated
  - ordered_hashmap_ensure_allocated
  - ordered_hashmap_put
  - ordered_hashmap_update
  - ordered_hashmap_replace
  - hashmap_get
  - ordered_hashmap_get
  - ordered_hashmap_get2
  - hashmap_contains
  - ordered_hashmap_contains
  - hashmap_remove
  - ordered_hashmap_remove
  - ordered_hashmap_remove2
  - ordered_hashmap_remove_value
  - ordered_hashmap_remove_and_put
  - ordered_hashmap_remove_and_replace
  - hashmap_merge
  - ordered_hashmap_merge
  - hashmap_reserve
  - ordered_hashmap_reserve
  - hashmap_move
  - ordered_hashmap_move
  - hashmap_move_one
  - ordered_hashmap_move_one
  - hashmap_size
  - ordered_hashmap_size
  - hashmap_isempty
  - ordered_hashmap_isempty
  - hashmap_buckets
  - ordered_hashmap_buckets
  - hashmap_iterate
  - ordered_hashmap_iterate
  - hashmap_clear
  - ordered_hashmap_clear
  - hashmap_clear_free
  - ordered_hashmap_clear_free
  - ordered_hashmap_clear_free_free
  - hashmap_steal_first
  - ordered_hashmap_steal_first
  - hashmap_steal_first_key
  - ordered_hashmap_steal_first_key
  - hashmap_first_key
  - ordered_hashmap_first_key
  - hashmap_first
  - ordered_hashmap_first
  - hashmap_get_strv
  - ordered_hashmap_get_strv
  - HASHMAP_FOREACH
  - ORDERED_HASHMAP_FOREACH
  - HASHMAP_FOREACH_KEY
  - ORDERED_HASHMAP_FOREACH_KEY
  source_file: /src/casync/src/hashmap.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: HASH_KEY_SIZE
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/casync/src/hashmap.h
      type_or_value: '16'
    - item_type: preproc_def
      name: _IDX_ITERATOR_FIRST
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/casync/src/hashmap.h
      type_or_value: (UINT_MAX - 1)
    - item_type: preproc_def
      name: ITERATOR_FIRST
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/casync/src/hashmap.h
      type_or_value: ((Iterator) { .idx = _IDX_ITERATOR_FIRST, .next_key = NULL })
    - item_type: preproc_def
      name: HASHMAP_DEBUG_PARAMS
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/casync/src/hashmap.h
      type_or_value: ', const char *func, const char *file, int line'
    - item_type: preproc_def
      name: HASHMAP_DEBUG_SRC_ARGS
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/casync/src/hashmap.h
      type_or_value: ', __func__, __FILE__, __LINE__'
    - item_type: preproc_def
      name: HASHMAP_DEBUG_PASS_ARGS
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/casync/src/hashmap.h
      type_or_value: ', func, file, line'
    - item_type: preproc_def
      name: _cleanup_hashmap_free_
      pos:
        line_end: 366
        line_start: 365
        source_file: /src/casync/src/hashmap.h
      type_or_value: _cleanup_(hashmap_freep)
    - item_type: preproc_def
      name: _cleanup_hashmap_free_free_
      pos:
        line_end: 367
        line_start: 366
        source_file: /src/casync/src/hashmap.h
      type_or_value: _cleanup_(hashmap_free_freep)
    - item_type: preproc_def
      name: _cleanup_hashmap_free_free_free_
      pos:
        line_end: 368
        line_start: 367
        source_file: /src/casync/src/hashmap.h
      type_or_value: _cleanup_(hashmap_free_free_freep)
    - item_type: preproc_def
      name: _cleanup_ordered_hashmap_free_
      pos:
        line_end: 369
        line_start: 368
        source_file: /src/casync/src/hashmap.h
      type_or_value: _cleanup_(ordered_hashmap_freep)
    - item_type: preproc_def
      name: _cleanup_ordered_hashmap_free_free_
      pos:
        line_end: 370
        line_start: 369
        source_file: /src/casync/src/hashmap.h
      type_or_value: _cleanup_(ordered_hashmap_free_freep)
    - item_type: preproc_def
      name: _cleanup_ordered_hashmap_free_free_free_
      pos:
        line_end: 371
        line_start: 370
        source_file: /src/casync/src/hashmap.h
      type_or_value: _cleanup_(ordered_hashmap_free_free_freep)
    structs:
    - fields:
      - name: idx
        type: unsigned
      - name: '*next_key'
        type: void
      item_type: struct
      name: Iterator
      pos:
        line_end: 64
        line_start: 56
        source_file: /src/casync/src/hashmap.h
    typedefs:
    - item_type: typedef
      name: HashmapBase
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/casync/src/hashmap.h
      type: HashmapBase
    - item_type: typedef
      name: Hashmap
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/casync/src/hashmap.h
      type: Hashmap
    - item_type: typedef
      name: OrderedHashmap
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/casync/src/hashmap.h
      type: OrderedHashmap
    - item_type: typedef
      name: Set
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/casync/src/hashmap.h
      type: Set
    union: []
- function_names: []
  source_file: /src/casync/src/caprotocol.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CA_PROTOCOL_SIZE_MIN
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/casync/src/caprotocol.h
      type_or_value: (sizeof(CaProtocolHeader))
    - item_type: preproc_def
      name: CA_PROTOCOL_SIZE_MAX
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/casync/src/caprotocol.h
      type_or_value: (16*1024*1024)
    structs:
    - fields:
      - name: size
        type: le64_t
      - name: type
        type: le64_t
      item_type: struct
      name: CaProtocolHeader
      pos:
        line_end: 67
        line_start: 64
        source_file: /src/casync/src/caprotocol.h
    - fields:
      - name: header
        type: CaProtocolHeader
      - name: feature_flags
        type: le64_t
      item_type: struct
      name: CaProtocolHello
      pos:
        line_end: 75
        line_start: 72
        source_file: /src/casync/src/caprotocol.h
    - fields:
      - name: header
        type: CaProtocolHeader
      - name: data[]
        type: uint8_t
      item_type: struct
      name: CaProtocolFile
      pos:
        line_end: 101
        line_start: 98
        source_file: /src/casync/src/caprotocol.h
    - fields:
      - name: header
        type: CaProtocolHeader
      item_type: struct
      name: CaProtocolFileEOF
      pos:
        line_end: 105
        line_start: 103
        source_file: /src/casync/src/caprotocol.h
    - fields:
      - name: header
        type: CaProtocolHeader
      - name: flags
        type: le64_t
      - name: chunks[]
        type: uint8_t
      item_type: struct
      name: CaProtocolRequest
      pos:
        line_end: 111
        line_start: 107
        source_file: /src/casync/src/caprotocol.h
    - fields:
      - name: header
        type: CaProtocolHeader
      - name: flags
        type: le64_t
      - name: chunk[CA_CHUNK_ID_SIZE]
        type: uint8_t
      - name: data[]
        type: uint8_t
      item_type: struct
      name: CaProtocolChunk
      pos:
        line_end: 123
        line_start: 118
        source_file: /src/casync/src/caprotocol.h
    - fields:
      - name: header
        type: CaProtocolHeader
      - name: chunk[CA_CHUNK_ID_SIZE]
        type: uint8_t
      item_type: struct
      name: CaProtocolMissing
      pos:
        line_end: 133
        line_start: 130
        source_file: /src/casync/src/caprotocol.h
    - fields:
      - name: header
        type: CaProtocolHeader
      item_type: struct
      name: CaProtocolGoodbye
      pos:
        line_end: 137
        line_start: 135
        source_file: /src/casync/src/caprotocol.h
    - fields:
      - name: header
        type: CaProtocolHeader
      - name: error
        type: le64_t
      - name: reason[]
        type: char
      item_type: struct
      name: CaProtocolAbort
      pos:
        line_end: 143
        line_start: 139
        source_file: /src/casync/src/caprotocol.h
    typedefs: []
    union: []
- function_names:
  - CA_ENCODER_AT_ROOT
  - CA_ENCODER_IS_NAKED
  - ca_encoder_new
  - ca_encoder_acl_entry_free
  - ca_encoder_node_free
  - ca_encoder_unref
  - ca_encoder_set_feature_flags
  - ca_encoder_get_feature_flags
  - ca_encoder_get_covering_feature_flags
  - ca_encoder_set_base_fd
  - ca_encoder_get_base_fd
  - ca_encoder_current_node
  - ca_encoder_current_child_node
  - ca_encoder_node_child_of
  - ca_encoder_node_parent_of
  - ca_encoder_node_current_dirent
  - ca_encoder_node_current_child_name
  - scandir_filter
  - scandir_compare
  - ca_encoder_node_read_dirents
  - dirent_bsearch_func
  - ca_encoder_node_load_exclude_file
  - ca_encoder_node_read_device_size
  - ca_encoder_node_read_symlink
  - ca_encoder_node_read_chattr
  - ca_encoder_node_read_fat_attrs
  - ca_encoder_node_read_btrfs
  - ca_encoder_node_read_selinux_label
  - ca_encoder_node_read_generation
  - ca_encoder_node_read_quota_projid
  - compare_xattr
  - ca_encoder_node_read_xattrs
  - ca_encoder_node_read_mount_id
  - ca_encoder_shift_uid
  - ca_encoder_shift_gid
  - uid_to_name
  - gid_to_name
  - compare_acl_entry
  - acl_entry_permissions
  - ca_encoder_node_process_acl
  - ca_encoder_node_read_acl
  - ca_encoder_node_read_user_group_names
  - ca_encoder_forget_children
  - ca_encoder_init_child
  - ca_encoder_open_child
  - ca_encoder_enter_child
  - ca_encoder_leave_child
  - ca_encoder_shall_store_child_node
  - ca_encoder_node_shall_enumerate
  - ca_encoder_collect_covering_feature_flags
  - ca_encoder_node_get_payload_size
  - ca_encoder_enter_state
  - ca_encoder_initialize_name_table
  - ca_encoder_add_name_table_item
  - ca_encoder_update_name_table_end_offset
  - ca_encoder_step_node
  - ca_encoder_advance_buffer
  - ca_encoder_step
  - ca_encoder_get_payload_data
  - ca_encoder_skip_payload_data
  - ca_encoder_get_filename_data
  - ca_encoder_fixup_mtime
  - ca_encoder_fixup_mode
  - ca_encoder_format_acl_user_size
  - ca_encoder_format_acl_group_size
  - ca_encoder_format_acl_user_append
  - ca_encoder_format_acl_group_append
  - ca_encoder_get_entry_data
  - ca_encoder_get_goodbye_data
  - ca_encoder_write_digest
  - ca_encoder_get_data
  - ca_encoder_node_path
  - ca_encoder_current_path
  - ca_encoder_current_mode
  - ca_encoder_current_target
  - ca_encoder_current_mtime
  - ca_encoder_current_size
  - ca_encoder_current_uid
  - ca_encoder_current_gid
  - ca_encoder_current_user
  - ca_encoder_current_group
  - ca_encoder_current_rdev
  - ca_encoder_current_chattr
  - ca_encoder_current_fat_attrs
  - ca_encoder_current_xattr
  - ca_encoder_current_quota_projid
  - ca_encoder_current_payload_offset
  - ca_encoder_current_archive_offset
  - ca_encoder_current_location
  - ca_encoder_node_seek_child
  - ca_encoder_seek_path
  - ca_encoder_seek_path_and_enter
  - ca_encoder_node_install_name_table
  - ca_encoder_seek_location
  - ca_encoder_set_uid_shift
  - ca_encoder_set_uid_range
  - ca_encoder_enable_archive_digest
  - ca_encoder_enable_payload_digest
  - ca_encoder_enable_hardlink_digest
  - ca_encoder_get_archive_digest
  - ca_encoder_get_payload_digest
  - ca_encoder_get_hardlink_digest
  source_file: /src/casync/src/caencoder.c
  types:
    enum:
    - enumerators:
      - name: CA_ENCODER_HAS_EXCLUDE_FILE_DONT_KNOW
        value: '-1'
      - name: CA_ENCODER_HAS_EXCLUDE_FILE_NO
        value: '0'
      - name: CA_ENCODER_HAS_EXCLUDE_FILE_YES
      - name: CA_ENCODER_HAS_EXCLUDE_FILE_LOADED
      item_type: enum
      name: CaEncoderHasExcludeFile
      pos:
        line_end: 55
        line_start: 50
        source_file: /src/casync/src/caencoder.c
    - enumerators:
      - name: CA_ENCODER_INIT
      - name: CA_ENCODER_FIRST_DIRENT
      - name: CA_ENCODER_ENTRY
      - name: CA_ENCODER_IN_PAYLOAD
      - name: CA_ENCODER_ENTERED
      - name: CA_ENCODER_NEXT_DIRENT
      - name: CA_ENCODER_FILENAME
      - name: CA_ENCODER_GOODBYE
      - name: CA_ENCODER_FINALIZE
      - name: CA_ENCODER_EOF
      item_type: enum
      name: CaEncoderState
      pos:
        line_end: 162
        line_start: 151
        source_file: /src/casync/src/caencoder.c
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*data'
        type: void
      - name: data_size
        type: size_t
      item_type: struct
      name: CaEncoderExtendedAttribute
      pos:
        line_end: 61
        line_start: 57
        source_file: /src/casync/src/caencoder.c
    - fields:
      - name: '*name'
        type: char
      - name: permissions
        type: uint64_t
      item_type: struct
      name: CaEncoderACLEntry
      pos:
        line_end: 71
        line_start: 63
        source_file: /src/casync/src/caencoder.c
    - fields:
      - name: fd
        type: int
      - name: stat
        type: struct stat
      - name: magic
        type: statfs_f_type_t
      - name: '**dirents'
        type: struct dirent
      - name: n_dirents
        type: size_t
      - name: dirent_idx
        type: size_t
      - name: '*symlink_target'
        type: char
      - name: device_size
        type: uint64_t
      - name: chattr_flags
        type: unsigned
      - name: chattr_flags_valid
        type: bool
      - name: fat_attrs
        type: uint32_t
      - name: fat_attrs_valid
        type: bool
      - name: '*xattrs'
        type: CaEncoderExtendedAttribute
      - name: n_xattrs
        type: size_t
      - name: xattrs_valid
        type: bool
      - name: xattrs_idx
        type: size_t
      - name: '*acl_user'
        type: CaEncoderACLEntry
      - name: n_acl_user
        type: size_t
      - name: '*acl_group'
        type: CaEncoderACLEntry
      - name: n_acl_group
        type: size_t
      - name: '*acl_default_user'
        type: CaEncoderACLEntry
      - name: n_acl_default_user
        type: size_t
      - name: '*acl_default_group'
        type: CaEncoderACLEntry
      - name: n_acl_default_group
        type: size_t
      - name: acl_group_obj_permissions
        type: uint64_t
      - name: acl_default_user_obj_permissions
        type: uint64_t
      - name: acl_default_group_obj_permissions
        type: uint64_t
      - name: acl_default_other_permissions
        type: uint64_t
      - name: acl_default_mask_permissions
        type: uint64_t
      - name: acl_valid
        type: bool
      - name: '*fcaps'
        type: void
      - name: fcaps_size
        type: size_t
      - name: is_subvolume
        type: bool
      - name: is_subvolume_ro
        type: bool
      - name: subvolume_valid
        type: bool
      - name: selinux_label_valid
        type: bool
      - name: '*selinux_label'
        type: char
      - name: generation
        type: int
      - name: generation_valid
        type: int
      - name: quota_projid
        type: uint32_t
      - name: quota_projid_valid
        type: bool
      - name: '*name_table'
        type: CaNameTable
      - name: mount_id
        type: int
      - name: has_exclude_file
        type: CaEncoderHasExcludeFile
      - name: '*exclude_match'
        type: CaMatch
      item_type: struct
      name: CaEncoderNode
      pos:
        line_end: 149
        line_start: 73
        source_file: /src/casync/src/caencoder.c
    - fields:
      - name: state
        type: CaEncoderState
      - name: feature_flags
        type: uint64_t
      - name: covering_feature_flags
        type: uint64_t
      - name: time_granularity
        type: uint64_t
      - name: nodes[NODES_MAX]
        type: CaEncoderNode
      - name: n_nodes
        type: size_t
      - name: node_idx
        type: size_t
      - name: buffer
        type: ReallocBuffer
      - name: xattr_list_buffer
        type: ReallocBuffer
      - name: xattr_value_buffer
        type: ReallocBuffer
      - name: archive_offset
        type: uint64_t
      - name: payload_offset
        type: uint64_t
      - name: skipped_bytes
        type: uint64_t
      - name: cached_uid
        type: uid_t
      - name: cached_gid
        type: gid_t
      - name: '*cached_user_name'
        type: char
      - name: '*cached_group_name'
        type: char
      - name: uid_shift
        type: uid_t
      - name: uid_range
        type: uid_t
      - name: '*archive_digest'
        type: CaDigest
      - name: '*payload_digest'
        type: CaDigest
      - name: '*hardlink_digest'
        type: CaDigest
      - name: payload_digest_invalid
        type: bool
      - name: hardlink_digest_invalid
        type: bool
      - name: want_archive_digest
        type: bool
      - name: want_payload_digest
        type: bool
      - name: want_hardlink_digest
        type: bool
      item_type: struct
      name: CaEncoder
      pos:
        line_end: 203
        line_start: 164
        source_file: /src/casync/src/caencoder.c
    typedefs: []
    union: []
- function_names:
  - ca_seed_new
  - ca_seed_remove_and_close_cache
  - ca_seed_unref
  - ca_seed_set_base_fd
  - ca_seed_set_base_path
  - ca_seed_set_cache_fd
  - ca_seed_set_cache_path
  - ca_seed_open
  - ca_seed_make_chunk_id
  - ca_seed_write_cache_entry
  - ca_seed_cache_chunks
  - ca_seed_cache_final_chunk
  - ca_seed_cache_hardlink
  - ca_seed_step
  - ca_seed_get
  - ca_seed_has
  - ca_seed_get_hardlink_target
  - ca_seed_current_path
  - ca_seed_current_mode
  - ca_seed_set_feature_flags
  - ca_seed_set_chunk_size
  - ca_seed_get_file_root
  - ca_seed_set_hardlink
  - ca_seed_set_chunks
  - ca_seed_get_requests
  - ca_seed_get_request_bytes
  - ca_seed_get_seeding_time_nsec
  source_file: /src/casync/src/caseed.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*encoder'
        type: CaEncoder
      - name: base_fd
        type: int
      - name: cache_fd
        type: int
      - name: '*cache_path'
        type: char
      - name: chunker
        type: CaChunker
      - name: '*chunk_digest'
        type: CaDigest
      - name: ready
        type: bool
      - name: remove_cache
        type: bool
      - name: cache_hardlink
        type: bool
      - name: cache_chunks
        type: bool
      - name: buffer
        type: ReallocBuffer
      - name: '*buffer_location'
        type: CaLocation
      - name: '*root'
        type: CaFileRoot
      - name: feature_flags
        type: uint64_t
      - name: n_requests
        type: uint64_t
      - name: n_request_bytes
        type: uint64_t
      - name: first_step_nsec
        type: uint64_t
      - name: last_step_nsec
        type: uint64_t
      item_type: struct
      name: CaSeed
      pos:
        line_end: 54
        line_start: 28
        source_file: /src/casync/src/caseed.c
    typedefs: []
    union: []
- function_names:
  - read_quota_projid
  - write_quota_projid
  source_file: /src/casync/src/quota-projid.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - is_main_thread
  - indirect_storage
  - DIRECT_BUCKETS
  - n_buckets
  - n_entries
  - n_entries_inc
  - n_entries_dec
  - storage_ptr
  - hash_key
  - base_bucket_hash
  - bucket_hash
  - get_hash_key
  - bucket_at
  - plain_bucket_at
  - ordered_bucket_at
  - set_bucket_at
  - bucket_at_swap
  - bucket_at_virtual
  - dib_raw_ptr
  - bucket_distance
  - bucket_calculate_dib
  - bucket_set_dib
  - skip_free_buckets
  - bucket_mark_free
  - bucket_move_entry
  - next_idx
  - prev_idx
  - entry_value
  - base_remove_entry
  - remove_entry
  - hashmap_iterate_in_insertion_order
  - hashmap_iterate_in_internal_order
  - hashmap_iterate_entry
  - internal_hashmap_iterate
  - set_iterate
  - HASHMAP_FOREACH_IDX
  - reset_direct_storage
  - hashmap_base_new
  - internal_hashmap_new
  - internal_ordered_hashmap_new
  - internal_set_new
  - hashmap_base_ensure_allocated
  - internal_hashmap_ensure_allocated
  - internal_ordered_hashmap_ensure_allocated
  - internal_set_ensure_allocated
  - hashmap_free_no_clear
  - internal_hashmap_free
  - internal_hashmap_free_free
  - hashmap_free_free_free
  - internal_hashmap_clear
  - internal_hashmap_clear_free
  - hashmap_clear_free_free
  - hashmap_put_robin_hood
  - hashmap_base_put_boldly
  - hashmap_put_boldly
  - resize_buckets
  - base_bucket_scan
  - bucket_scan
  - hashmap_put
  - set_put
  - hashmap_replace
  - hashmap_update
  - internal_hashmap_get
  - hashmap_get2
  - internal_hashmap_contains
  - internal_hashmap_remove
  - hashmap_remove2
  - hashmap_remove_and_put
  - set_remove_and_put
  - hashmap_remove_and_replace
  - hashmap_remove_value
  - find_first_entry
  - internal_hashmap_first
  - internal_hashmap_first_key
  - internal_hashmap_steal_first
  - internal_hashmap_steal_first_key
  - internal_hashmap_size
  - internal_hashmap_buckets
  - internal_hashmap_merge
  - HASHMAP_FOREACH_IDX
  - set_merge
  - HASHMAP_FOREACH_IDX
  - internal_hashmap_reserve
  - internal_hashmap_move
  - HASHMAP_FOREACH_IDX
  - internal_hashmap_move_one
  - internal_hashmap_copy
  - internal_hashmap_get_strv
  - ordered_hashmap_next
  - set_consume
  - set_put_strdup
  - set_put_strdupv
  - STRV_FOREACH
  source_file: /src/casync/src/hashmap.c
  types:
    enum:
    - enumerators:
      - name: HASHMAP_TYPE_PLAIN
      - name: HASHMAP_TYPE_ORDERED
      - name: HASHMAP_TYPE_SET
      - name: _HASHMAP_TYPE_MAX
      item_type: enum
      name: HashmapType
      pos:
        line_end: 174
        line_start: 169
        source_file: /src/casync/src/hashmap.c
    preproc_defs:
    - item_type: preproc_def
      name: INV_KEEP_FREE
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/casync/src/hashmap.c
      type_or_value: 5U
    - item_type: preproc_def
      name: _IDX_SWAP_BEGIN
      pos:
        line_end: 118
        line_start: 117
        source_file: /src/casync/src/hashmap.c
      type_or_value: (UINT_MAX - 3)
    - item_type: preproc_def
      name: IDX_PUT
      pos:
        line_end: 119
        line_start: 118
        source_file: /src/casync/src/hashmap.c
      type_or_value: (_IDX_SWAP_BEGIN + 0)
    - item_type: preproc_def
      name: IDX_TMP
      pos:
        line_end: 120
        line_start: 119
        source_file: /src/casync/src/hashmap.c
      type_or_value: (_IDX_SWAP_BEGIN + 1)
    - item_type: preproc_def
      name: _IDX_SWAP_END
      pos:
        line_end: 121
        line_start: 120
        source_file: /src/casync/src/hashmap.c
      type_or_value: (_IDX_SWAP_BEGIN + 2)
    - item_type: preproc_def
      name: IDX_FIRST
      pos:
        line_end: 123
        line_start: 122
        source_file: /src/casync/src/hashmap.c
      type_or_value: '(UINT_MAX - 1) '
    - item_type: preproc_def
      name: IDX_NIL
      pos:
        line_end: 124
        line_start: 123
        source_file: /src/casync/src/hashmap.c
      type_or_value: 'UINT_MAX       '
    - item_type: preproc_def
      name: DIB_RAW_OVERFLOW
      pos:
        line_end: 137
        line_start: 136
        source_file: /src/casync/src/hashmap.c
      type_or_value: '((dib_raw_t)0xfdU)   '
    - item_type: preproc_def
      name: DIB_RAW_REHASH
      pos:
        line_end: 138
        line_start: 137
        source_file: /src/casync/src/hashmap.c
      type_or_value: '((dib_raw_t)0xfeU)   '
    - item_type: preproc_def
      name: DIB_RAW_FREE
      pos:
        line_end: 139
        line_start: 138
        source_file: /src/casync/src/hashmap.c
      type_or_value: '((dib_raw_t)0xffU)   '
    - item_type: preproc_def
      name: DIB_RAW_INIT
      pos:
        line_end: 140
        line_start: 139
        source_file: /src/casync/src/hashmap.c
      type_or_value: '((char)DIB_RAW_FREE) '
    - item_type: preproc_def
      name: DIB_FREE
      pos:
        line_end: 142
        line_start: 141
        source_file: /src/casync/src/hashmap.c
      type_or_value: UINT_MAX
    - item_type: preproc_def
      name: HASHMAP_DEBUG_FIELDS
      pos:
        line_end: 164
        line_start: 163
        source_file: /src/casync/src/hashmap.c
      type_or_value: struct hashmap_debug_info debug;
    structs:
    - fields:
      - name: '*key'
        type: void
      item_type: struct
      name: hashmap_base_entry
      pos:
        line_end: 95
        line_start: 93
        source_file: /src/casync/src/hashmap.c
    - fields:
      - name: b
        type: struct hashmap_base_entry
      - name: '*value'
        type: void
      item_type: struct
      name: plain_hashmap_entry
      pos:
        line_end: 103
        line_start: 100
        source_file: /src/casync/src/hashmap.c
    - fields:
      - name: p
        type: struct plain_hashmap_entry
      - name: iterate_next
        type: unsigned
      item_type: struct
      name: ordered_hashmap_entry
      pos:
        line_end: 108
        line_start: 105
        source_file: /src/casync/src/hashmap.c
    - fields:
      - name: b
        type: struct hashmap_base_entry
      item_type: struct
      name: set_entry
      pos:
        line_end: 112
        line_start: 110
        source_file: /src/casync/src/hashmap.c
    - fields:
      - name: e[_IDX_SWAP_END - _IDX_SWAP_BEGIN]
        type: struct ordered_hashmap_entry
      item_type: struct
      name: swap_entries
      pos:
        line_end: 132
        line_start: 130
        source_file: /src/casync/src/hashmap.c
    - fields:
      - name: max_entries
        type: unsigned
      - name: line
        type: int
      - name: '*file'
        type: char
      - name: '*func'
        type: char
      - name: put_count
        type: unsigned
      - name: rem_count
        type: unsigned
      - name: last_rem_idx
        type: unsigned
      item_type: struct
      name: hashmap_debug_info
      pos:
        line_end: 157
        line_start: 144
        source_file: /src/casync/src/hashmap.c
    - fields:
      - name: storage[sizeof(struct indirect_storage)]
        type: uint8_t
      item_type: struct
      name: direct_storage
      pos:
        line_end: 195
        line_start: 190
        source_file: /src/casync/src/hashmap.c
    - fields:
      - name: '*hash_ops'
        type: struct hash_ops
      - name: type
        type: enum HashmapType
      - name: has_indirect
        type: bool
      - name: n_direct_entries
        type: unsigned
      - name: from_pool
        type: bool
      item_type: struct
      name: HashmapBase
      pos:
        line_end: 228
        line_start: 214
        source_file: /src/casync/src/hashmap.c
    - fields:
      - name: b
        type: struct HashmapBase
      item_type: struct
      name: Hashmap
      pos:
        line_end: 235
        line_start: 233
        source_file: /src/casync/src/hashmap.c
    - fields:
      - name: b
        type: struct HashmapBase
      - name: iterate_list_head
        type: unsigned
      item_type: struct
      name: OrderedHashmap
      pos:
        line_end: 240
        line_start: 237
        source_file: /src/casync/src/hashmap.c
    - fields:
      - name: b
        type: struct HashmapBase
      item_type: struct
      name: Set
      pos:
        line_end: 244
        line_start: 242
        source_file: /src/casync/src/hashmap.c
    - fields:
      - name: head_size
        type: size_t
      - name: entry_size
        type: size_t
      - name: '*mempool'
        type: struct mempool
      - name: n_direct_buckets
        type: unsigned
      item_type: struct
      name: hashmap_type_info
      pos:
        line_end: 256
        line_start: 251
        source_file: /src/casync/src/hashmap.c
    typedefs:
    - item_type: typedef
      name: dib_raw_t
      pos:
        line_end: 135
        line_start: 135
        source_file: /src/casync/src/hashmap.c
      type: uint8_t
    union:
    - fields:
      - name: indirect
        type: struct indirect_storage
      - name: direct
        type: struct direct_storage
      item_type: union
      name: _packed_
      pos:
        line_end: 220
        line_start: 217
        source_file: /src/casync/src/hashmap.c
- function_names: []
  source_file: /src/casync/src/caseed.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CaSeed
      pos:
        line_end: 10
        line_start: 10
        source_file: /src/casync/src/caseed.h
      type: CaSeed
    union: []
- function_names:
  - detect_compression
  - compressor_is_supported
  - compressor_start_decode
  - compressor_start_encode
  - compressor_finish
  - compressor_input
  - compressor_decode
  - compressor_encode
  source_file: /src/casync/src/compressor.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CA_LOCATION_DESIGNATOR_VALID
  - ca_location_new_void
  - ca_location_format
  source_file: /src/casync/src/calocation.h
  types:
    enum:
    - enumerators:
      - name: CA_LOCATION_ENTRY
        value: '''e'''
      - name: CA_LOCATION_PAYLOAD
        value: '''p'''
      - name: CA_LOCATION_GOODBYE
        value: '''g'''
      - name: CA_LOCATION_VOID
        value: '''v'''
      - name: CA_LOCATION_FILENAME
        value: '''n'''
      - name: _CA_LOCATION_DESIGNATOR_INVALID
        value: '-1'
      item_type: enum
      name: CaLocationDesignator
      pos:
        line_end: 25
        line_start: 18
        source_file: /src/casync/src/calocation.h
    - enumerators:
      - name: CA_LOCATION_WITH_SIZE
        value: 1U << 0
      - name: CA_LOCATION_WITH_FEATURE_FLAGS
        value: 1U << 2
      - name: CA_LOCATION_WITH_ARCHIVE_OFFSET
        value: 1U << 3
      - name: CA_LOCATION_WITH_MTIME
        value: 1U << 1
      - name: CA_LOCATION_WITH_NAME_TABLE
        value: 1U << 4
      - name: CA_LOCATION_WITH_ALL
        value: CA_LOCATION_WITH_SIZE|CA_LOCATION_WITH_MTIME|CA_LOCATION_WITH_FEATURE_FLAGS|CA_LOCATION_WITH_ARCHIVE_OFFSET|CA_LOCATION_WITH_NAME_TABLE
      item_type: enum
      name: CaLocationWith
      pos:
        line_end: 44
        line_start: 36
        source_file: /src/casync/src/calocation.h
    preproc_defs: []
    structs:
    - fields:
      - name: n_ref
        type: unsigned
      - name: designator
        type: CaLocationDesignator
      - name: '*path'
        type: char
      - name: offset
        type: uint64_t
      - name: size
        type: uint64_t
      - name: '*root'
        type: CaFileRoot
      - name: mtime
        type: uint64_t
      - name: inode
        type: uint64_t
      - name: generation
        type: int
      - name: generation_valid
        type: bool
      - name: feature_flags
        type: uint64_t
      - name: archive_offset
        type: uint64_t
      - name: '*name_table'
        type: CaNameTable
      - name: '*formatted'
        type: char
      - name: formatted_with
        type: CaLocationWith
      item_type: struct
      name: CaLocation
      pos:
        line_end: 79
        line_start: 48
        source_file: /src/casync/src/calocation.h
    typedefs: []
    union: []
- function_names:
  - fuse_exit_signal_handler
  - iterate_until_file
  - seek_to_path
  - fill_stat
  - casync_init
  - casync_getattr
  - casync_readlink
  - casync_readdir
  - casync_open
  - casync_read
  - casync_statfs
  - casync_ioctl
  - casync_getxattr
  - casync_listxattr
  - feature_flags_warning
  - ca_fuse_run
  source_file: /src/casync/src/cafuse.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FUSE_USE_VERSION
      pos:
        line_end: 3
        line_start: 2
        source_file: /src/casync/src/cafuse.c
      type_or_value: '26'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dirent_is_file_with_suffix
  - readdir_no_dot
  source_file: /src/casync/src/dirent-util.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_origin_new
  - ca_origin_flush
  - ca_origin_unref
  - ca_origin_put
  - ca_origin_get
  - ca_origin_concat
  - ca_origin_advance_items
  - ca_origin_advance_bytes
  - ca_origin_dump
  - ca_origin_put_void
  - ca_origin_extract_bytes
  source_file: /src/casync/src/caorigin.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/quota-projid.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_block_device_unrefp
  source_file: /src/casync/src/canbd.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CaBlockDevice
      pos:
        line_end: 9
        line_start: 9
        source_file: /src/casync/src/canbd.h
      type: CaBlockDevice
    union: []
- function_names:
  - robust_curl_easy_perform
  - process_remote
  - write_index
  - write_index_eof
  - write_archive
  - write_archive_eof
  - write_buffer
  - chunk_url
  - acquire_file
  - run
  - help
  - parse_argv
  - exit_signal_handler
  - main
  source_file: /src/casync/src/casync-http.c
  types:
    enum:
    - enumerators:
      - name: PROCESS_UNTIL_WRITTEN
      - name: PROCESS_UNTIL_CAN_PUT_CHUNK
      - name: PROCESS_UNTIL_CAN_PUT_INDEX
      - name: PROCESS_UNTIL_HAVE_REQUEST
      - name: PROCESS_UNTIL_CAN_PUT_ARCHIVE
      - name: PROCESS_UNTIL_FINISHED
      item_type: enum
      name: ProcessUntil
      pos:
        line_end: 34
        line_start: 27
        source_file: /src/casync/src/casync-http.c
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - level_from_string
  - get_log_level
  - set_log_level
  - set_log_level_from_string
  - log_fullv
  - log_info_errno
  - log_error_errno
  - log_debug_errno
  source_file: /src/casync/src/log.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_match_alloc
  - ca_match_alloc_subtree
  - parse_line
  - ca_match_new_from_file
  - ca_match_new_from_strings
  - STRV_FOREACH
  - ca_match_ref
  - ca_match_unref
  - ca_match_add_child
  - ca_match_make_writable
  - ca_match_merge
  - compare_match
  - ca_match_normalize
  - ca_match_test
  - ca_match_dump
  - ca_match_equal
  source_file: /src/casync/src/camatch.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_cache_digest_type
  - ca_cache_new
  - ca_cache_unref
  - ca_cache_ref
  - ca_cache_set_digest_type
  - ca_cache_set_fd
  - ca_cache_set_path
  - ca_cache_open
  - ca_cache_get
  - ca_cache_put
  - ca_cache_remove
  source_file: /src/casync/src/cacache.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: n_ref
        type: unsigned
      - name: fd
        type: int
      - name: '*path'
        type: char
      - name: digest_type
        type: CaDigestType
      - name: '*digest'
        type: CaDigest
      item_type: struct
      name: CaCache
      pos:
        line_end: 21
        line_start: 15
        source_file: /src/casync/src/cacache.c
    typedefs: []
    union: []
- function_names:
  - read_file_system_size
  source_file: /src/casync/src/fssize.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FAT_SIGNATURE
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/casync/src/fssize.c
      type_or_value: UINT16_C(0xaa55)
    - item_type: preproc_def
      name: _ANDROID_BOOTIMG_MAGIC_1
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/casync/src/fssize.c
      type_or_value: UINT32_C(0x52444e41)
    - item_type: preproc_def
      name: _ANDROID_BOOTIMG_MAGIC_2
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/casync/src/fssize.c
      type_or_value: UINT32_C(0x2144494f)
    structs: []
    typedefs: []
    union:
    - fields:
      - name: _packed_
        type: "struct {\n                        uint8_t ignored[3];\n                        uint8_t
          system_id[8];\n                        le16_t sector_size;\n                        uint8_t
          sec_per_cluster;\n                        le16_t reserved;\n                        uint8_t
          fats;\n                        le16_t dir_entries;\n                        le16_t
          sectors;\n                        uint8_t media;\n                        le16_t
          fat_length;\n                        le16_t secs_track;\n                        le16_t
          heads;\n                        le32_t hidden;\n                        le32_t
          total_sect;\n\n                        /* skip the boot code in the middle
          */\n                        uint8_t _skip[474];\n\n                        uint16_t
          signature;\n\n                        /* ignore the rest */\n                }"
      - name: _packed_
        type: "struct {\n                        le32_t s_magic;\n                        le32_t
          inodes;\n                        le32_t mkfs_time;\n                        le32_t
          block_size;\n                        le32_t fragments;\n                        le16_t
          compression;\n                        le16_t block_log;\n                        le16_t
          flags;\n                        le16_t no_ids;\n                        le16_t
          s_major;\n                        le16_t s_minor;\n                        le64_t
          root_inode;\n                        le64_t bytes_used;\n\n                        /*
          ignore the rest */\n                }"
      - name: android_bootimg
        type: "struct {\n                        le32_t magic;\n                        le32_t
          magic2;\n\n                        le32_t kernel_size;\n                        le32_t
          kernel_addr;\n\n                        le32_t initrd_size;\n                        le32_t
          initrd_addr;\n\n                        le32_t second_size;\n                        le32_t
          second_addr;\n\n                        le32_t tags_addr;\n                        le32_t
          page_size;\n\n                        le32_t dtb_size;\n\n                        /*
          ignore the rest */\n                }"
      - name: _packed_
        type: "struct {\n                        /* The ext2, ext3, ext4 superblock
          starts at offset 1024 */\n                        uint8_t _skip[1024];\n\n
          \                       le32_t s_inodes_count;\n                        le32_t
          s_blocks_count;\n                        le32_t s_r_blocks_count;\n                        le32_t
          s_free_blocks_count;\n                        le32_t s_free_inodes_count;\n
          \                       le32_t s_first_data_block;\n                        le32_t
          s_log_block_size;\n                        le32_t s_log_frag_size;\n                        le32_t
          s_blocks_per_group;\n                        le32_t s_frags_per_group;\n
          \                       le32_t s_inodes_per_group;\n                        le32_t
          s_mtime;\n                        le32_t s_wtime;\n                        le16_t
          s_mnt_count;\n                        le16_t s_max_mnt_count;\n                        le16_t
          s_magic;\n\n                        /* ignore the rest */\n                }"
      item_type: union
      name: superblock
      pos:
        line_end: 101
        line_start: 13
        source_file: /src/casync/src/fssize.c
- function_names:
  - realloc_buffer_data
  - realloc_buffer_data_offset
  - realloc_buffer_size
  - realloc_buffer_append_byte
  - realloc_buffer_empty
  - realloc_buffer_read
  source_file: /src/casync/src/realloc-buffer.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*data'
        type: void
      - name: allocated
        type: size_t
      - name: start
        type: size_t
      - name: end
        type: size_t
      item_type: struct
      name: ReallocBuffer
      pos:
        line_end: 14
        line_start: 9
        source_file: /src/casync/src/realloc-buffer.h
    typedefs: []
    union: []
- function_names:
  - ca_name_table_new_size
  - ca_name_table_ref
  - ca_name_table_unref
  - ca_name_table_make_writable
  - ca_name_table_add
  - ca_name_table_format_realloc_buffer
  - ca_name_table_format
  - parse_one
  - ca_name_table_parse
  - name_table_compare
  - ca_name_table_make_bst
  - ca_name_table_dump
  - ca_name_table_dump_recursive
  - ca_name_table_equal
  source_file: /src/casync/src/canametable.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: START_ITEMS
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/casync/src/canametable.c
      type_or_value: 16U
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_remote_new
  - ca_remote_ref
  - ca_remote_remove_cache
  - ca_remote_file_free
  - ca_remote_unref
  - ca_remote_set_log_level
  - ca_remote_set_rate_limit_bps
  - ca_remote_set_local_feature_flags
  - ca_remote_add_local_feature_flags
  - ca_remote_get_local_feature_flags
  - ca_remote_get_remote_feature_flags
  - ca_remote_set_io_fds
  - ca_remote_get_io_fds
  - ca_remote_get_read_size
  - ca_remote_get_io_events
  - ca_remote_url_prefix_install
  - ca_remote_ssh_prefix_install
  - ca_remote_any_prefix_install
  - ca_remote_set_index_url
  - ca_remote_set_archive_url
  - ca_remote_set_store_url
  - ca_remote_add_store_url
  - ca_remote_set_cache_path
  - ca_remote_set_cache_fd
  - ca_remote_file_set_path
  - ca_remote_set_index_path
  - ca_remote_file_set_fd
  - ca_remote_set_index_fd
  - ca_remote_set_archive_path
  - ca_remote_set_archive_fd
  - ca_remote_init_cache
  - ca_remote_enqueue_request
  - ca_remote_dequeue_request
  - ca_remote_file_open
  - ca_remote_start
  - ca_remote_read
  - ca_remote_write
  - operations_and_services_compatible
  - ca_remote_process_hello
  - ca_remote_file_process
  - ca_remote_file_process_eof
  - ca_remote_process_index
  - ca_remote_process_index_eof
  - ca_remote_process_archive
  - ca_remote_process_archive_eof
  - ca_remote_process_request
  - ca_remote_process_chunk
  - ca_remote_process_missing
  - ca_remote_file_install
  - ca_remote_process_goodbye
  - ca_remote_process_abort
  - validate_hello
  - validate_file
  - validate_file_eof
  - validate_request
  - validate_chunk
  - validate_missing
  - validate_goodbye
  - validate_abort
  - ca_remote_process_message
  - ca_remote_send_hello
  - ca_remote_send_file
  - ca_remote_send_index
  - ca_remote_send_archive
  - ca_remote_send_request
  - ca_remote_step
  - ca_remote_poll
  - ca_remote_validate_chunk
  - ca_remote_request
  - ca_remote_request_async
  - ca_remote_next_request
  - ca_remote_can_put_chunk
  - ca_remote_put_chunk
  - ca_remote_put_missing
  - ca_remote_file_can_put
  - ca_remote_can_put_index
  - ca_remote_file_put
  - ca_remote_put_index
  - ca_remote_file_put_eof
  - ca_remote_put_index_eof
  - ca_remote_file_read
  - ca_remote_read_index
  - ca_remote_can_put_archive
  - ca_remote_put_archive
  - ca_remote_put_archive_eof
  - ca_remote_read_archive
  - ca_remote_goodbye
  - ca_remote_abort
  - ca_remote_has_pending_requests
  - ca_remote_next_chunk
  - ca_remote_has_unwritten
  - ca_remote_has_chunks
  - ca_remote_forget_chunk
  - ca_remote_set_digest_type
  - ca_remote_get_digest_type
  - ca_remote_get_requests
  - ca_remote_get_request_bytes
  - ca_remote_set_compression_type
  source_file: /src/casync/src/caremote.c
  types:
    enum:
    - enumerators:
      - name: CA_REMOTE_HELLO
      - name: CA_REMOTE_RUNNING
      - name: CA_REMOTE_EOF
      item_type: enum
      name: CaRemoteState
      pos:
        line_end: 30
        line_start: 26
        source_file: /src/casync/src/caremote.c
    preproc_defs:
    - item_type: preproc_def
      name: REMOTE_BUFFER_SIZE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/casync/src/caremote.c
      type_or_value: (1024U*1024U)
    - item_type: preproc_def
      name: REMOTE_BUFFER_LOW
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/casync/src/caremote.c
      type_or_value: (1024U*4U)
    structs:
    - fields:
      - name: '*path'
        type: char
      - name: fd
        type: int
      - name: buffer
        type: ReallocBuffer
      - name: complete
        type: bool
      item_type: struct
      name: CaRemoteFile
      pos:
        line_end: 37
        line_start: 32
        source_file: /src/casync/src/caremote.c
    - fields:
      - name: n_ref
        type: unsigned
      - name: state
        type: CaRemoteState
      - name: '*url_prefix'
        type: char
      - name: '*callout'
        type: char
      - name: '*index_url'
        type: char
      - name: '*archive_url'
        type: char
      - name: '*wstore_url'
        type: char
      - name: '**rstore_urls'
        type: char
      - name: '*cache_path'
        type: char
      - name: cache_fd
        type: int
      - name: remove_cache
        type: bool
      - name: input_fd
        type: int
      - name: output_fd
        type: int
      - name: log_level
        type: int
      - name: rate_limit_bps
        type: uint64_t
      - name: input_buffer
        type: ReallocBuffer
      - name: output_buffer
        type: ReallocBuffer
      - name: chunk_buffer
        type: ReallocBuffer
      - name: validate_buffer
        type: ReallocBuffer
      - name: queue_start_high
        type: uint64_t
      - name: queue_end_high
        type: uint64_t
      - name: local_feature_flags
        type: uint64_t
      - name: remote_feature_flags
        type: uint64_t
      - name: index_file
        type: CaRemoteFile
      - name: archive_file
        type: CaRemoteFile
      - name: last_chunk
        type: CaChunkID
      - name: last_chunk_valid
        type: bool
      - name: pid
        type: pid_t
      - name: sent_hello
        type: bool
      - name: sent_goodbye
        type: bool
      - name: frame_size
        type: size_t
      - name: digest_type
        type: CaDigestType
      - name: '* validate_digest'
        type: CaDigest
      - name: n_requests
        type: uint64_t
      - name: n_request_bytes
        type: uint64_t
      - name: compression_type
        type: CaCompressionType
      item_type: struct
      name: CaRemote
      pos:
        line_end: 94
        line_start: 39
        source_file: /src/casync/src/caremote.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/reflink.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/rm-rf.h
  types:
    enum:
    - enumerators:
      - name: REMOVE_ONLY_DIRECTORIES
        value: '1'
      - name: REMOVE_UNDO_IMMUTABLE
        value: '16'
      - name: REMOVE_ROOT
        value: '2'
      - name: REMOVE_SPAN_DEVICES
        value: '8'
      - name: REMOVE_PHYSICAL
        value: '4'
      item_type: enum
      name: RemoveFlags
      pos:
        line_end: 13
        line_start: 7
        source_file: /src/casync/src/rm-rf.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_is_definitely_path
  - ca_is_url
  - ca_is_ssh_path
  - ca_classify_locator
  - ca_strip_file_url
  - ca_locator_has_suffix
  - ca_xattr_name_is_valid
  - ca_xattr_name_store
  - ca_compressed_chunk_suffix
  - ca_locator_patch_last_component
  - CA_LOCATOR_URL
  - CA_LOCATOR_SSH
  - CA_LOCATOR_PATH
  source_file: /src/casync/src/cautil.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/cacommon.h
  types:
    enum:
    - enumerators:
      - name: CA_ITERATE_CURRENT
      - name: CA_ITERATE_PREVIOUS
      - name: CA_ITERATE_FIRST
      - name: CA_ITERATE_NEXT
      - name: CA_ITERATE_LAST
      - name: _CA_ITERATE_MAX
      - name: _CA_ITERATE_INVALID
        value: '-1'
      item_type: enum
      name: CaIterate
      pos:
        line_end: 13
        line_start: 5
        source_file: /src/casync/src/cacommon.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_match_unrefp
  - ca_match_children
  source_file: /src/casync/src/camatch.h
  types:
    enum:
    - enumerators:
      - name: CA_MATCH_POSITIVE
      - name: CA_MATCH_INNER
      - name: CA_MATCH_NEGATIVE
      - name: _CA_MATCH_TYPE_MAX
      - name: _CA_MATCH_TYPE_INVALID
        value: '-1'
      item_type: enum
      name: CaMatchType
      pos:
        line_end: 17
        line_start: 11
        source_file: /src/casync/src/camatch.h
    preproc_defs: []
    structs:
    - fields:
      - name: n_ref
        type: unsigned
      - name: type
        type: CaMatchType
      - name: anchored
        type: bool
      - name: directory_only
        type: bool
      - name: '**children'
        type: CaMatch
      - name: n_children
        type: size_t
      - name: n_allocated
        type: size_t
      - name: name[]
        type: char
      item_type: struct
      name: CaMatch
      pos:
        line_end: 33
        line_start: 19
        source_file: /src/casync/src/camatch.h
    typedefs:
    - item_type: typedef
      name: CaMatch
      pos:
        line_end: 9
        line_start: 9
        source_file: /src/casync/src/camatch.h
      type: CaMatch
    union: []
- function_names:
  - ca_remote_unrefp
  source_file: /src/casync/src/caremote.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CaRemote
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/casync/src/caremote.h
      type: CaRemote
    union: []
- function_names:
  - help
  - version
  - parse_chunk_sizes
  - parse_what_selector
  - dump_with_flags
  - parse_argv
  - set_default_store
  - load_seeds_and_extra_stores
  - STRV_FOREACH
  - STRV_FOREACH
  - combined_with_flags
  - load_feature_flags
  - load_chunk_size
  - verbose_print_feature_flags
  - verbose_print_path
  - verbose_print_done_make
  - verbose_print_done_extract
  - process_step_generic
  - verb_make
  - normalize_seek_path
  - verb_extract
  - mtree_escape_full
  - mtree_escape
  - empty_to_dot
  - list_one_file
  - verb_list
  - verb_digest
  - verb_mount
  - verb_mkdev
  - free_stores
  - free_storesp
  - allocate_stores
  - STRV_FOREACH
  - verb_pull
  - verb_push
  - verb_udev
  - verb_gc
  - dispatch_verb
  - main
  source_file: /src/casync/src/casync-tool.c
  types:
    enum:
    - enumerators:
      - name: WHAT_ARCHIVE
      - name: WHAT_ARCHIVE_INDEX
      - name: WHAT_BLOB
      - name: WHAT_BLOB_INDEX
      - name: WHAT_DIRECTORY
      - name: _WHAT_INVALID
        value: '-1'
      item_type: enum
      name: arg_what
      pos:
        line_end: 45
        line_start: 38
        source_file: /src/casync/src/casync-tool.c
    - enumerators:
      - name: MAKE_ARCHIVE
      - name: MAKE_ARCHIVE_INDEX
      - name: MAKE_BLOB_INDEX
      - name: _MAKE_OPERATION_INVALID
        value: '-1'
      item_type: enum
      name: MakeOperation
      pos:
        line_end: 1171
        line_start: 1166
        source_file: /src/casync/src/casync-tool.c
    - enumerators:
      - name: EXTRACT_ARCHIVE
      - name: _EXTRACT_OPERATION_INVALID
        value: '-1'
      - name: EXTRACT_BLOB_INDEX
      - name: EXTRACT_ARCHIVE_INDEX
      item_type: enum
      name: ExtractOperation
      pos:
        line_end: 1461
        line_start: 1456
        source_file: /src/casync/src/casync-tool.c
    - enumerators:
      - name: LIST_ARCHIVE
      - name: LIST_ARCHIVE_INDEX
      - name: LIST_DIRECTORY
      - name: _LIST_OPERATION_INVALID
        value: '-1'
      item_type: enum
      name: ListOperation
      pos:
        line_end: 2105
        line_start: 2100
        source_file: /src/casync/src/casync-tool.c
    - enumerators:
      - name: DIGEST_ARCHIVE
      - name: DIGEST_ARCHIVE_INDEX
      - name: DIGEST_BLOB
      - name: DIGEST_BLOB_INDEX
      - name: DIGEST_DIRECTORY
      - name: _DIGEST_OPERATION_INVALID
        value: '-1'
      item_type: enum
      name: DigestOperation
      pos:
        line_end: 2414
        line_start: 2407
        source_file: /src/casync/src/casync-tool.c
    - enumerators:
      - name: MOUNT_ARCHIVE
      - name: MOUNT_ARCHIVE_INDEX
      - name: _MOUNT_OPERATION_INVALID
        value: '-1'
      item_type: enum
      name: MountOperation
      pos:
        line_end: 2722
        line_start: 2718
        source_file: /src/casync/src/casync-tool.c
    - enumerators:
      - name: MKDEV_BLOB
      - name: MKDEV_BLOB_INDEX
      - name: _MKDEV_OPERATION_INVALID
        value: '-1'
      item_type: enum
      name: MkDevOperation
      pos:
        line_end: 2831
        line_start: 2827
        source_file: /src/casync/src/casync-tool.c
    preproc_defs: []
    structs:
    - fields:
      - name: flag
        type: uint64_t
      - name: '*name'
        type: char
      item_type: struct
      name: "table[] = {\n                                { CA_FORMAT_WITH_FLAG_HIDDEN,
        \   \"hidden\"     },\n                                { CA_FORMAT_WITH_FLAG_SYSTEM,
        \   \"system\"     },\n                                { CA_FORMAT_WITH_FLAG_ARCHIVE,
        \  \"archive\"    },\n                                { CA_FORMAT_WITH_FLAG_APPEND,
        \   \"sappend\"    },\n                                { CA_FORMAT_WITH_FLAG_NODUMP,
        \   \"nodump\"     },\n                                { CA_FORMAT_WITH_FLAG_IMMUTABLE,
        \"simmutable\" },\n                        }"
      pos:
        line_end: 1920
        line_start: 1917
        source_file: /src/casync/src/casync-tool.c
    - fields:
      - name: '**stores'
        type: CaStore
      - name: n_stores
        type: size_t
      item_type: struct
      name: CaStoresCleanup
      pos:
        line_end: 3367
        line_start: 3364
        source_file: /src/casync/src/casync-tool.c
    typedefs: []
    union: []
- function_names:
  - pread_try_harder
  - validate
  - reflink_fd
  source_file: /src/casync/src/reflink.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FS_BLOCK_SIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/casync/src/reflink.c
      type_or_value: 4096U
    - item_type: preproc_def
      name: VALIDATE
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/casync/src/reflink.c
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - block_exit_handler
  - exit_signal_handler
  - install_exit_handler
  - sync_poll_sigset
  - disable_sigpipe
  source_file: /src/casync/src/signal-handler.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/caformat.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CA_FORMAT_USER_SIZE_MAX
      pos:
        line_end: 296
        line_start: 295
        source_file: /src/casync/src/caformat.h
      type_or_value: (offsetof(CaFormatUser, name) + 256)
    - item_type: preproc_def
      name: CA_FORMAT_GROUP_SIZE_MAX
      pos:
        line_end: 303
        line_start: 302
        source_file: /src/casync/src/caformat.h
      type_or_value: (offsetof(CaFormatGroup, name) + 256)
    - item_type: preproc_def
      name: CA_FORMAT_XATTR_SIZE_MAX
      pos:
        line_end: 310
        line_start: 309
        source_file: /src/casync/src/caformat.h
      type_or_value: (offsetof(CaFormatXAttr, name_and_value) + 255 + 1 + (64 * 1024))
    - item_type: preproc_def
      name: CA_FORMAT_FCAPS_SIZE_MAX
      pos:
        line_end: 317
        line_start: 316
        source_file: /src/casync/src/caformat.h
      type_or_value: (offsetof(CaFormatFCaps, data) + (64*1024))
    - item_type: preproc_def
      name: CA_FORMAT_ACL_PERMISSION_READ
      pos:
        line_end: 319
        line_start: 318
        source_file: /src/casync/src/caformat.h
      type_or_value: '4'
    - item_type: preproc_def
      name: CA_FORMAT_ACL_PERMISSION_WRITE
      pos:
        line_end: 320
        line_start: 319
        source_file: /src/casync/src/caformat.h
      type_or_value: '2'
    - item_type: preproc_def
      name: CA_FORMAT_ACL_PERMISSION_EXECUTE
      pos:
        line_end: 321
        line_start: 320
        source_file: /src/casync/src/caformat.h
      type_or_value: '1'
    - item_type: preproc_def
      name: CA_FORMAT_ACL_USER_SIZE_MAX
      pos:
        line_end: 330
        line_start: 329
        source_file: /src/casync/src/caformat.h
      type_or_value: (offsetof(CaFormatACLUser, name) + 256)
    - item_type: preproc_def
      name: CA_FORMAT_ACL_GROUP_SIZE_MAX
      pos:
        line_end: 339
        line_start: 338
        source_file: /src/casync/src/caformat.h
      type_or_value: (offsetof(CaFormatACLGroup, name) + 256)
    - item_type: preproc_def
      name: CA_FORMAT_SELINUX_SIZE_MAX
      pos:
        line_end: 360
        line_start: 359
        source_file: /src/casync/src/caformat.h
      type_or_value: (offsetof(CaFormatSELinux, label) + 4096)
    - item_type: preproc_def
      name: CA_FORMAT_SYMLINK_SIZE_MAX
      pos:
        line_end: 373
        line_start: 372
        source_file: /src/casync/src/caformat.h
      type_or_value: (offsetof(CaFormatSymlink, target) + 4096)
    - item_type: preproc_def
      name: CA_FORMAT_FILENAME_SIZE_MAX
      pos:
        line_end: 392
        line_start: 391
        source_file: /src/casync/src/caformat.h
      type_or_value: (offsetof(CaFormatFilename, name) + 256)
    - item_type: preproc_def
      name: CA_FORMAT_GOODBYE_HASH_KEY
      pos:
        line_end: 418
        line_start: 411
        source_file: /src/casync/src/caformat.h
      type_or_value: "{                                   \\\n                0xb3U,
        0x84U, 0x1dU, 0x0fU, \\\n                0x2bU, 0x44U, 0x74U, 0x85U, \\\n
        \               0xc1U, 0x2eU, 0xc2U, 0xd1U, \\\n                0x30U, 0xedU,
        0x36U, 0x27U, \\\n        }"
    structs:
    - fields:
      - name: size
        type: le64_t
      - name: type
        type: le64_t
      item_type: struct
      name: CaFormatHeader
      pos:
        line_end: 277
        line_start: 274
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: feature_flags
        type: le64_t
      - name: mode
        type: le64_t
      - name: flags
        type: le64_t
      - name: uid
        type: le64_t
      - name: gid
        type: le64_t
      - name: mtime
        type: le64_t
      item_type: struct
      name: CaFormatEntry
      pos:
        line_end: 287
        line_start: 279
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: name[]
        type: char
      item_type: struct
      name: CaFormatUser
      pos:
        line_end: 292
        line_start: 289
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: name[]
        type: char
      item_type: struct
      name: CaFormatGroup
      pos:
        line_end: 300
        line_start: 297
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: name_and_value[]
        type: uint8_t
      item_type: struct
      name: CaFormatXAttr
      pos:
        line_end: 307
        line_start: 304
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: data[]
        type: uint8_t
      item_type: struct
      name: CaFormatFCaps
      pos:
        line_end: 314
        line_start: 311
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: uid
        type: le64_t
      - name: permissions
        type: le64_t
      - name: name[]
        type: char
      item_type: struct
      name: CaFormatACLUser
      pos:
        line_end: 327
        line_start: 322
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: gid
        type: le64_t
      - name: permissions
        type: le64_t
      - name: name[]
        type: char
      item_type: struct
      name: CaFormatACLGroup
      pos:
        line_end: 336
        line_start: 331
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: permissions
        type: le64_t
      item_type: struct
      name: CaFormatACLGroupObj
      pos:
        line_end: 343
        line_start: 340
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: user_obj_permissions
        type: le64_t
      - name: group_obj_permissions
        type: le64_t
      - name: other_permissions
        type: le64_t
      - name: mask_permissions
        type: le64_t
      item_type: struct
      name: CaFormatACLDefault
      pos:
        line_end: 351
        line_start: 345
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: label[]
        type: char
      item_type: struct
      name: CaFormatSELinux
      pos:
        line_end: 356
        line_start: 353
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: projid
        type: uint64_t
      item_type: struct
      name: CaFormatQuotaProjID
      pos:
        line_end: 364
        line_start: 361
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: target[]
        type: char
      item_type: struct
      name: CaFormatSymlink
      pos:
        line_end: 369
        line_start: 366
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: data[]
        type: uint8_t
      item_type: struct
      name: CaFormatPayload
      pos:
        line_end: 377
        line_start: 374
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: major
        type: uint64_t
      - name: minor
        type: uint64_t
      item_type: struct
      name: CaFormatDevice
      pos:
        line_end: 383
        line_start: 379
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: name[]
        type: char
      item_type: struct
      name: CaFormatFilename
      pos:
        line_end: 388
        line_start: 385
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: offset
        type: le64_t
      - name: size
        type: le64_t
      - name: hash
        type: le64_t
      item_type: struct
      name: CaFormatGoodbyeItem
      pos:
        line_end: 397
        line_start: 393
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: entry_offset
        type: le64_t
      - name: size
        type: le64_t
      - name: marker
        type: le64_t
      item_type: struct
      name: CaFormatGoodbyeTail
      pos:
        line_end: 403
        line_start: 399
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: items[]
        type: CaFormatGoodbyeItem
      item_type: struct
      name: CaFormatGoodbye
      pos:
        line_end: 409
        line_start: 405
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: feature_flags
        type: le64_t
      - name: chunk_size_min
        type: le64_t
      - name: chunk_size_avg
        type: le64_t
      - name: chunk_size_max
        type: le64_t
      item_type: struct
      name: CaFormatIndex
      pos:
        line_end: 427
        line_start: 421
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: offset
        type: le64_t
      - name: chunk[CA_CHUNK_ID_SIZE]
        type: uint8_t
      item_type: struct
      name: CaFormatTableItem
      pos:
        line_end: 432
        line_start: 429
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: _zero_fill1
        type: le64_t
      - name: _zero_fill2
        type: le64_t
      - name: index_offset
        type: le64_t
      - name: size
        type: le64_t
      - name: marker
        type: le64_t
      item_type: struct
      name: CaFormatTableTail
      pos:
        line_end: 440
        line_start: 434
        source_file: /src/casync/src/caformat.h
    - fields:
      - name: header
        type: CaFormatHeader
      - name: items[]
        type: CaFormatTableItem
      item_type: struct
      name: CaFormatTable
      pos:
        line_end: 446
        line_start: 442
        source_file: /src/casync/src/caformat.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/fssize.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/cacompression.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/hash-funcs.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: hash
        type: hash_func_t
      - name: compare
        type: compare_func_t
      item_type: struct
      name: hash_ops
      pos:
        line_end: 33
        line_start: 30
        source_file: /src/casync/src/hash-funcs.h
    typedefs:
    - item_type: typedef
      name: (*hash_func_t)(const void *p, struct siphash *state)
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/casync/src/hash-funcs.h
      type: void
    - item_type: typedef
      name: (*compare_func_t)(const void *a, const void *b)
      pos:
        line_end: 28
        line_start: 28
        source_file: /src/casync/src/hash-funcs.h
      type: int
    union: []
- function_names: []
  source_file: /src/casync/src/cautil.h
  types:
    enum:
    - enumerators:
      - name: CA_LOCATOR_PATH
      - name: _CA_LOCATOR_CLASS_INVALID
        value: '-1'
      - name: CA_LOCATOR_SSH
      - name: CA_LOCATOR_URL
      item_type: enum
      name: CaLocatorClass
      pos:
        line_end: 15
        line_start: 10
        source_file: /src/casync/src/cautil.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_chunker_set_size
  - ca_chunker_start
  - ca_chunker_roll
  - shall_break
  - CA_CHUNKER_IS_FIXED_SIZE
  - ca_chunker_scan
  source_file: /src/casync/src/cachunker.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - encode_char
  - decode_char
  - ca_chunk_id_parse
  - ca_chunk_id_format
  - ca_chunk_id_make
  - ca_chunk_id_format_path
  source_file: /src/casync/src/cachunkid.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - set_new
  - set_free
  - set_free_free
  - set_copy
  - set_ensure_allocated
  - set_get
  - set_contains
  - set_remove
  - set_reserve
  - set_move
  - set_move_one
  - set_size
  - set_isempty
  - set_buckets
  - set_clear
  - set_clear_free
  - set_steal_first
  - set_first
  - set_get_strv
  - SET_FOREACH
  - SET_FOREACH_MOVE
  source_file: /src/casync/src/set.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: _cleanup_set_free_
      pos:
        line_end: 137
        line_start: 136
        source_file: /src/casync/src/set.h
      type_or_value: _cleanup_(set_freep)
    - item_type: preproc_def
      name: _cleanup_set_free_free_
      pos:
        line_end: 138
        line_start: 137
        source_file: /src/casync/src/set.h
      type_or_value: _cleanup_(set_free_freep)
    structs: []
    typedefs: []
    union: []
- function_names:
  - timespec_to_nsec
  - nsec_to_timespec
  - NSEC_TO_TIMESPEC_INIT
  - now
  source_file: /src/casync/src/time-util.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NSEC_INFINITY
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/casync/src/time-util.h
      type_or_value: ((uint64_t) -1)
    - item_type: preproc_def
      name: NSEC_PER_SEC
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/casync/src/time-util.h
      type_or_value: ((uint64_t) UINT64_C(1000000000))
    - item_type: preproc_def
      name: NSEC_PER_MSEC
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/casync/src/time-util.h
      type_or_value: ((uint64_t) UINT64_C(1000000))
    - item_type: preproc_def
      name: NSEC_PER_USEC
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/casync/src/time-util.h
      type_or_value: ((uint64_t) UINT64_C(1000))
    - item_type: preproc_def
      name: NSEC_PER_MINUTE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/casync/src/time-util.h
      type_or_value: ((uint64_t) (UINT64_C(60)*NSEC_PER_SEC))
    - item_type: preproc_def
      name: NSEC_PER_HOUR
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/casync/src/time-util.h
      type_or_value: ((uint64_t) (UINT64_C(60)*NSEC_PER_MINUTE))
    - item_type: preproc_def
      name: NSEC_PER_DAY
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/casync/src/time-util.h
      type_or_value: ((uint64_t) (UINT64_C(24)*NSEC_PER_HOUR))
    - item_type: preproc_def
      name: NSEC_PER_WEEK
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/casync/src/time-util.h
      type_or_value: ((uint64_t) (UINT64_C(7)*NSEC_PER_DAY))
    - item_type: preproc_def
      name: NSEC_PER_MONTH
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/casync/src/time-util.h
      type_or_value: ((uint64_t) (UINT64_C(2629800)*NSEC_PER_SEC))
    - item_type: preproc_def
      name: NSEC_PER_YEAR
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/casync/src/time-util.h
      type_or_value: ((uint64_t) (UINT64_C(31557600)*NSEC_PER_SEC))
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/parse-util.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FORMAT_BYTES_MAX
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/casync/src/parse-util.h
      type_or_value: '128'
    structs: []
    typedefs: []
    union: []
- function_names:
  - CA_CHUNKER_DISCRIMINATOR_FROM_AVG
  source_file: /src/casync/src/cachunker.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CA_CHUNK_SIZE_AVG_DEFAULT
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/casync/src/cachunker.h
      type_or_value: ((size_t) (64U*1024U))
    - item_type: preproc_def
      name: CA_CHUNKER_WINDOW_SIZE
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/casync/src/cachunker.h
      type_or_value: '48'
    - item_type: preproc_def
      name: CA_CHUNKER_INIT
      pos:
        line_end: 44
        line_start: 37
        source_file: /src/casync/src/cachunker.h
      type_or_value: "{                                                                                      \\\n
        \               .chunk_size_min = CA_CHUNK_SIZE_AVG_DEFAULT/4,                                 \\\n
        \               .chunk_size_avg = CA_CHUNK_SIZE_AVG_DEFAULT,                                   \\\n
        \               .chunk_size_max = CA_CHUNK_SIZE_AVG_DEFAULT*4,                                 \\\n
        \               .discriminator = CA_CHUNKER_DISCRIMINATOR_FROM_AVG(CA_CHUNK_SIZE_AVG_DEFAULT),
        \\\n        }"
    structs:
    - fields:
      - name: h
        type: uint32_t
      - name: window_size
        type: size_t
      - name: chunk_size
        type: size_t
      - name: chunk_size_min
        type: size_t
      - name: chunk_size_max
        type: size_t
      - name: chunk_size_avg
        type: size_t
      - name: discriminator
        type: size_t
      - name: window[CA_CHUNKER_WINDOW_SIZE]
        type: uint8_t
      item_type: struct
      name: CaChunker
      pos:
        line_end: 34
        line_start: 21
        source_file: /src/casync/src/cachunker.h
    typedefs: []
    union: []
- function_names:
  - _printf_
  - _likely_
  - _unlikely_
  - _alloc_
  source_file: /src/casync/src/gcc-macro.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: _sentinel_
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/casync/src/gcc-macro.h
      type_or_value: __attribute__ ((sentinel))
    - item_type: preproc_def
      name: _unused_
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/casync/src/gcc-macro.h
      type_or_value: __attribute__ ((unused))
    - item_type: preproc_def
      name: _unused_
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/casync/src/gcc-macro.h
      type_or_value: __attribute__ ((unused))
    - item_type: preproc_def
      name: _malloc_
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/casync/src/gcc-macro.h
      type_or_value: __attribute__ ((malloc))
    - item_type: preproc_def
      name: _pure_
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/casync/src/gcc-macro.h
      type_or_value: __attribute__ ((pure))
    - item_type: preproc_def
      name: _packed_
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/casync/src/gcc-macro.h
      type_or_value: __attribute__ ((packed))
    - item_type: preproc_def
      name: _const_
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/casync/src/gcc-macro.h
      type_or_value: __attribute__ ((const))
    - item_type: preproc_def
      name: _fallthrough_
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/casync/src/gcc-macro.h
      type_or_value: __attribute__((fallthrough))
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_block_device_new
  - ca_block_device_unref
  - ca_block_device_set_size
  - ca_block_device_set_friendly_name
  - ca_block_device_establish_friendly_name
  - ca_block_device_open
  - ca_block_device_step
  - ca_block_device_get_request_offset
  - ca_block_device_get_request_size
  - ca_block_device_put_data
  - ca_block_device_get_poll_fd
  - ca_block_device_poll
  - ca_block_device_get_path
  - ca_block_device_set_path
  - ca_block_device_get_devnum
  - ca_block_device_test_nbd
  source_file: /src/casync/src/canbd.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NBD_MAX
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/casync/src/canbd.c
      type_or_value: '1024'
    structs:
    - fields:
      - name: device_fd
        type: int
      - name: socket_fd[2]
        type: int
      - name: '*device_path'
        type: char
      - name: ioctl_process
        type: pid_t
      - name: last_request
        type: struct nbd_request
      - name: size
        type: uint64_t
      - name: friendly_name_fd
        type: int
      - name: '*friendly_name'
        type: char
      - name: '*friendly_name_path'
        type: char
      - name: devnum
        type: dev_t
      item_type: struct
      name: CaBlockDevice
      pos:
        line_end: 40
        line_start: 23
        source_file: /src/casync/src/canbd.c
    typedefs: []
    union: []
- function_names:
  - unlinkat_immutable
  - rm_rf_children
  - rm_rf_at
  - rm_rf
  source_file: /src/casync/src/rm-rf.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEFINE_MEMPOOL
  source_file: /src/casync/src/mempool.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*first_pool'
        type: struct pool
      - name: '*freelist'
        type: void
      - name: tile_size
        type: size_t
      - name: at_least
        type: unsigned
      item_type: struct
      name: mempool
      pos:
        line_end: 33
        line_start: 28
        source_file: /src/casync/src/mempool.h
    typedefs: []
    union: []
- function_names:
  - format_timespan
  source_file: /src/casync/src/time-util.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*suffix'
        type: char
      - name: nsec
        type: uint64_t
      item_type: struct
      name: "table[] = {\n                { \"y\",     NSEC_PER_YEAR   },\n                {
        \"month\", NSEC_PER_MONTH  },\n                { \"w\",     NSEC_PER_WEEK
        \  },\n                { \"d\",     NSEC_PER_DAY    },\n                {
        \"h\",     NSEC_PER_HOUR   },\n                { \"min\",   NSEC_PER_MINUTE
        },\n                { \"s\",     NSEC_PER_SEC    },\n                { \"ms\",
        \   NSEC_PER_MSEC   },\n                { \"us\",    NSEC_PER_USEC   },\n
        \               { \"ns\",    1               },\n        }"
      pos:
        line_end: 9
        line_start: 6
        source_file: /src/casync/src/time-util.c
    typedefs: []
    union: []
- function_names:
  - rotate_left
  - sipround
  - siphash24_init
  - siphash24_compress
  - siphash24_finalize
  - siphash24
  source_file: /src/casync/src/siphash24.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/cafuse.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/chattr.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/casync/src/def.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NODES_MAX
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/casync/src/def.h
      type_or_value: '64'
    - item_type: preproc_def
      name: BUFFER_SIZE
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/casync/src/def.h
      type_or_value: (64U*1024U)
    - item_type: preproc_def
      name: SUPPORTED_FEATURE_MASK
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/casync/src/def.h
      type_or_value: CA_FORMAT_FEATURE_FLAGS_MAX
    - item_type: preproc_def
      name: SUPPORTED_FEATURE_MASK
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/casync/src/def.h
      type_or_value: (CA_FORMAT_FEATURE_FLAGS_MAX &~ CA_FORMAT_WITH_SELINUX)
    - item_type: preproc_def
      name: SUPPORTED_WITH_MASK
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/casync/src/def.h
      type_or_value: (CA_FORMAT_WITH_MASK & SUPPORTED_FEATURE_MASK)
    structs: []
    typedefs: []
    union: []
- function_names:
  - send_notify
  source_file: /src/casync/src/notify.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union:
    - fields:
      - name: sa
        type: struct sockaddr
      - name: un
        type: struct sockaddr_un
      item_type: union
      name: "sa = {\n                .un.sun_family = AF_UNIX,\n        }"
      pos:
        line_end: 14
        line_start: 11
        source_file: /src/casync/src/notify.c
- function_names: []
  source_file: /src/casync/src/compressor.h
  types:
    enum:
    - enumerators:
      - name: COMPRESSOR_UNINITIALIZED
      - name: COMPRESSOR_ENCODE
      - name: COMPRESSOR_DECODE
      item_type: enum
      name: CompressorOperation
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/casync/src/compressor.h
    preproc_defs:
    - item_type: preproc_def
      name: COMPRESSOR_CONTEXT_INIT
      pos:
        line_end: 53
        line_start: 48
        source_file: /src/casync/src/compressor.h
      type_or_value: "{                                                   \\\n                .operation
        = COMPRESSOR_UNINITIALIZED,      \\\n                .compressor = _CA_COMPRESSION_TYPE_INVALID,
        \\\n        }"
    structs:
    - fields:
      - name: operation
        type: CompressorOperation
      - name: compressor
        type: CaCompressionType
      item_type: struct
      name: CompressorContext
      pos:
        line_end: 46
        line_start: 26
        source_file: /src/casync/src/compressor.h
    typedefs: []
    union: []
- function_names:
  - read_attr_fd
  - write_attr_fd
  - mask_attr_fd
  - read_fat_attr_fd
  - write_fat_attr_fd
  - mask_fat_attr_fd
  source_file: /src/casync/src/chattr.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_chunk_collection_unrefp
  source_file: /src/casync/src/gc.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CaChunkCollection
      pos:
        line_end: 7
        line_start: 7
        source_file: /src/casync/src/gc.h
      type: CaChunkCollection
    union: []
- function_names:
  - ca_location_alloc
  - ca_location_new
  - ca_location_unref
  - ca_location_ref
  - ca_location_copy
  - ca_location_format_full
  - ca_location_parse
  - ca_location_patch_size
  - ca_location_patch_root
  - ca_location_advance
  - ca_location_merge
  - ca_location_open
  - ca_location_id_make
  - ca_location_equal
  source_file: /src/casync/src/calocation.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ca_chunk_id_equal
  - ca_chunk_id_is_null
  - CA_CHUNK_ID_PATH_SIZE
  source_file: /src/casync/src/cachunkid.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CA_CHUNK_ID_SIZE
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/casync/src/cachunkid.h
      type_or_value: '32'
    - item_type: preproc_def
      name: CA_CHUNK_ID_FORMAT_MAX
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/casync/src/cachunkid.h
      type_or_value: (CA_CHUNK_ID_SIZE*2+1)
    structs: []
    typedefs: []
    union:
    - fields:
      - name: bytes[CA_CHUNK_ID_SIZE]
        type: uint8_t
      - name: u64[CA_CHUNK_ID_SIZE / sizeof(uint64_t)]
        type: uint64_t
      item_type: union
      name: CaChunkID
      pos:
        line_end: 19
        line_start: 15
        source_file: /src/casync/src/cachunkid.h
- function_names:
  - ca_name_table_new
  - ca_name_table_items
  - ca_name_table_get
  - ca_name_table_last
  source_file: /src/casync/src/canametable.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: hash
        type: uint64_t
      - name: start_offset
        type: uint64_t
      - name: end_offset
        type: uint64_t
      item_type: struct
      name: CaNameItem
      pos:
        line_end: 20
        line_start: 16
        source_file: /src/casync/src/canametable.h
    - fields:
      - name: n_ref
        type: unsigned
      - name: '*parent'
        type: struct CaNameTable
      - name: entry_offset
        type: uint64_t
      - name: n_items
        type: size_t
      - name: n_allocated
        type: size_t
      - name: '*formatted'
        type: char
      - name: items[]
        type: CaNameItem
      item_type: struct
      name: CaNameTable
      pos:
        line_end: 34
        line_start: 22
        source_file: /src/casync/src/canametable.h
    typedefs: []
    union: []
