MCPcopy Create free account
hub / github.com/git/git / write_untracked_extension

Function write_untracked_extension

dir.c:3669–3723  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3667}
3668
3669void write_untracked_extension(struct strbuf *out, struct untracked_cache *untracked)
3670{
3671 struct ondisk_untracked_cache *ouc;
3672 struct write_data wd;
3673 unsigned char varbuf[16];
3674 uint8_t varint_len;
3675 const unsigned hashsz = the_hash_algo->rawsz;
3676
3677 CALLOC_ARRAY(ouc, 1);
3678 stat_data_to_disk(&ouc->info_exclude_stat, &untracked->ss_info_exclude.stat);
3679 stat_data_to_disk(&ouc->excludes_file_stat, &untracked->ss_excludes_file.stat);
3680 ouc->dir_flags = htonl(untracked->dir_flags);
3681
3682 varint_len = encode_varint(untracked->ident.len, varbuf);
3683 strbuf_add(out, varbuf, varint_len);
3684 strbuf_addbuf(out, &untracked->ident);
3685
3686 strbuf_add(out, ouc, sizeof(*ouc));
3687 strbuf_add(out, untracked->ss_info_exclude.oid.hash, hashsz);
3688 strbuf_add(out, untracked->ss_excludes_file.oid.hash, hashsz);
3689 strbuf_add(out, untracked->exclude_per_dir, strlen(untracked->exclude_per_dir) + 1);
3690 FREE_AND_NULL(ouc);
3691
3692 if (!untracked->root) {
3693 varint_len = encode_varint(0, varbuf);
3694 strbuf_add(out, varbuf, varint_len);
3695 return;
3696 }
3697
3698 wd.index = 0;
3699 wd.check_only = ewah_new();
3700 wd.valid = ewah_new();
3701 wd.sha1_valid = ewah_new();
3702 strbuf_init(&wd.out, 1024);
3703 strbuf_init(&wd.sb_stat, 1024);
3704 strbuf_init(&wd.sb_sha1, 1024);
3705 write_one_dir(untracked->root, &wd);
3706
3707 varint_len = encode_varint(wd.index, varbuf);
3708 strbuf_add(out, varbuf, varint_len);
3709 strbuf_addbuf(out, &wd.out);
3710 ewah_serialize_strbuf(wd.valid, out);
3711 ewah_serialize_strbuf(wd.check_only, out);
3712 ewah_serialize_strbuf(wd.sha1_valid, out);
3713 strbuf_addbuf(out, &wd.sb_stat);
3714 strbuf_addbuf(out, &wd.sb_sha1);
3715 strbuf_addch(out, '\0'); /* safe guard for string lists */
3716
3717 ewah_free(wd.valid);
3718 ewah_free(wd.check_only);
3719 ewah_free(wd.sha1_valid);
3720 strbuf_release(&wd.out);
3721 strbuf_release(&wd.sb_stat);
3722 strbuf_release(&wd.sb_sha1);
3723}
3724
3725static void free_untracked(struct untracked_cache_dir *ucd)
3726{

Callers 1

do_write_indexFunction · 0.85

Calls 11

stat_data_to_diskFunction · 0.85
strbuf_addFunction · 0.85
strbuf_addbufFunction · 0.85
ewah_newFunction · 0.85
strbuf_initFunction · 0.85
write_one_dirFunction · 0.85
ewah_serialize_strbufFunction · 0.85
strbuf_addchFunction · 0.85
ewah_freeFunction · 0.85
strbuf_releaseFunction · 0.85
encode_varintFunction · 0.70

Tested by

no test coverage detected