Lines Matching refs:mf

143 free_manifest(struct manifest *mf)  in free_manifest()  argument
145 for (uint32_t i = 0; i < mf->n_files; i++) { in free_manifest()
146 free(mf->files[i]); in free_manifest()
148 free(mf->files); in free_manifest()
149 free(mf->file_infos); in free_manifest()
150 for (uint32_t i = 0; i < mf->n_objects; i++) { in free_manifest()
151 free(mf->objects[i].file_info_indexes); in free_manifest()
153 free(mf->objects); in free_manifest()
154 free(mf); in free_manifest()
214 struct manifest *mf = x_malloc(sizeof(*mf)); in create_empty_manifest() local
215 mf->hash_size = 16; in create_empty_manifest()
216 mf->n_files = 0; in create_empty_manifest()
217 mf->files = NULL; in create_empty_manifest()
218 mf->n_file_infos = 0; in create_empty_manifest()
219 mf->file_infos = NULL; in create_empty_manifest()
220 mf->n_objects = 0; in create_empty_manifest()
221 mf->objects = NULL; in create_empty_manifest()
223 return mf; in create_empty_manifest()
229 struct manifest *mf = create_empty_manifest(); in read_manifest() local
238 READ_BYTE(mf->version); in read_manifest()
239 if (mf->version != MANIFEST_VERSION) { in read_manifest()
240 cc_log("Manifest file has unknown version %u", mf->version); in read_manifest()
244 READ_BYTE(mf->hash_size); in read_manifest()
245 if (mf->hash_size != 16) { in read_manifest()
247 cc_log("Manifest file has unsupported hash size %u", mf->hash_size); in read_manifest()
251 READ_INT(2, mf->reserved); in read_manifest()
253 READ_INT(4, mf->n_files); in read_manifest()
254 mf->files = x_calloc(mf->n_files, sizeof(*mf->files)); in read_manifest()
255 for (uint32_t i = 0; i < mf->n_files; i++) { in read_manifest()
256 READ_STR(mf->files[i]); in read_manifest()
259 READ_INT(4, mf->n_file_infos); in read_manifest()
260 mf->file_infos = x_calloc(mf->n_file_infos, sizeof(*mf->file_infos)); in read_manifest()
261 for (uint32_t i = 0; i < mf->n_file_infos; i++) { in read_manifest()
262 READ_INT(4, mf->file_infos[i].index); in read_manifest()
263 READ_BYTES(mf->hash_size, mf->file_infos[i].hash); in read_manifest()
264 READ_INT(4, mf->file_infos[i].size); in read_manifest()
265 READ_INT(8, mf->file_infos[i].mtime); in read_manifest()
266 READ_INT(8, mf->file_infos[i].ctime); in read_manifest()
269 READ_INT(4, mf->n_objects); in read_manifest()
270 mf->objects = x_calloc(mf->n_objects, sizeof(*mf->objects)); in read_manifest()
271 for (uint32_t i = 0; i < mf->n_objects; i++) { in read_manifest()
272 READ_INT(4, mf->objects[i].n_file_info_indexes); in read_manifest()
273 mf->objects[i].file_info_indexes = in read_manifest()
274 x_calloc(mf->objects[i].n_file_info_indexes, in read_manifest()
275 sizeof(*mf->objects[i].file_info_indexes)); in read_manifest()
276 for (uint32_t j = 0; j < mf->objects[i].n_file_info_indexes; j++) { in read_manifest()
277 READ_INT(4, mf->objects[i].file_info_indexes[j]); in read_manifest()
279 READ_BYTES(mf->hash_size, mf->objects[i].hash.hash); in read_manifest()
280 READ_INT(4, mf->objects[i].hash.size); in read_manifest()
283 return mf; in read_manifest()
287 free_manifest(mf); in read_manifest()
322 write_manifest(gzFile f, const struct manifest *mf) in write_manifest() argument
329 WRITE_INT(4, mf->n_files); in write_manifest()
330 for (uint32_t i = 0; i < mf->n_files; i++) { in write_manifest()
331 WRITE_STR(mf->files[i]); in write_manifest()
334 WRITE_INT(4, mf->n_file_infos); in write_manifest()
335 for (uint32_t i = 0; i < mf->n_file_infos; i++) { in write_manifest()
336 WRITE_INT(4, mf->file_infos[i].index); in write_manifest()
337 WRITE_BYTES(mf->hash_size, mf->file_infos[i].hash); in write_manifest()
338 WRITE_INT(4, mf->file_infos[i].size); in write_manifest()
339 WRITE_INT(8, mf->file_infos[i].mtime); in write_manifest()
340 WRITE_INT(8, mf->file_infos[i].ctime); in write_manifest()
343 WRITE_INT(4, mf->n_objects); in write_manifest()
344 for (uint32_t i = 0; i < mf->n_objects; i++) { in write_manifest()
345 WRITE_INT(4, mf->objects[i].n_file_info_indexes); in write_manifest()
346 for (uint32_t j = 0; j < mf->objects[i].n_file_info_indexes; j++) { in write_manifest()
347 WRITE_INT(4, mf->objects[i].file_info_indexes[j]); in write_manifest()
349 WRITE_BYTES(mf->hash_size, mf->objects[i].hash.hash); in write_manifest()
350 WRITE_INT(4, mf->objects[i].hash.size); in write_manifest()
361 verify_object(struct conf *conf, struct manifest *mf, struct object *obj, in verify_object() argument
365 struct file_info *fi = &mf->file_infos[obj->file_info_indexes[i]]; in verify_object()
366 char *path = mf->files[fi->index]; in verify_object()
428 if (memcmp(fi->hash, actual->hash, mf->hash_size) != 0 in verify_object()
466 get_include_file_index(struct manifest *mf, char *path, in get_include_file_index() argument
474 uint32_t n = mf->n_files; in get_include_file_index()
475 mf->files = x_realloc(mf->files, (n + 1) * sizeof(*mf->files)); in get_include_file_index()
476 mf->n_files++; in get_include_file_index()
477 mf->files[n] = x_strdup(path); in get_include_file_index()
482 get_file_hash_index(struct manifest *mf, in get_file_hash_index() argument
489 fi.index = get_include_file_index(mf, path, mf_files); in get_file_hash_index()
515 uint32_t n = mf->n_file_infos; in get_file_hash_index()
516 mf->file_infos = x_realloc(mf->file_infos, (n + 1) * sizeof(*mf->file_infos)); in get_file_hash_index()
517 mf->n_file_infos++; in get_file_hash_index()
518 mf->file_infos[n] = fi; in get_file_hash_index()
524 struct manifest *mf, struct hashtable *included_files) in add_file_info_indexes() argument
532 create_string_index_map(mf->files, mf->n_files); in add_file_info_indexes()
535 create_file_info_index_map(mf->file_infos, mf->n_file_infos); in add_file_info_indexes()
541 indexes[i] = get_file_hash_index(mf, path, file_hash, mf_files, in add_file_info_indexes()
552 add_object_entry(struct manifest *mf, in add_object_entry() argument
556 uint32_t n_objs = mf->n_objects; in add_object_entry()
557 mf->objects = x_realloc(mf->objects, (n_objs + 1) * sizeof(*mf->objects)); in add_object_entry()
558 mf->n_objects++; in add_object_entry()
559 struct object *obj = &mf->objects[n_objs]; in add_object_entry()
564 add_file_info_indexes(obj->file_info_indexes, n_fii, mf, included_files); in add_object_entry()
565 memcpy(obj->hash.hash, object_hash->hash, mf->hash_size); in add_object_entry()
575 struct manifest *mf = NULL; in manifest_get() local
592 mf = read_manifest(f); in manifest_get()
593 if (!mf) { in manifest_get()
602 for (uint32_t i = mf->n_objects; i > 0; i--) { in manifest_get()
603 if (verify_object(conf, mf, &mf->objects[i - 1], in manifest_get()
606 *fh = mf->objects[i - 1].hash; in manifest_get()
621 if (mf) { in manifest_get()
622 free_manifest(mf); in manifest_get()
635 struct manifest *mf = NULL; in manifest_put() local
645 mf = create_empty_manifest(); in manifest_put()
653 mf = read_manifest(f1); in manifest_put()
655 if (!mf) { in manifest_put()
658 mf = create_empty_manifest(); in manifest_put()
662 if (mf->n_objects > MAX_MANIFEST_ENTRIES) { in manifest_put()
675 free_manifest(mf); in manifest_put()
676 mf = create_empty_manifest(); in manifest_put()
677 } else if (mf->n_file_infos > MAX_MANIFEST_FILE_INFO_ENTRIES) { in manifest_put()
683 free_manifest(mf); in manifest_put()
684 mf = create_empty_manifest(); in manifest_put()
695 add_object_entry(mf, object_hash, included_files); in manifest_put()
696 if (write_manifest(f2, mf)) { in manifest_put()
711 if (mf) { in manifest_put()
712 free_manifest(mf); in manifest_put()
726 struct manifest *mf = NULL; in manifest_dump() local
741 mf = read_manifest(f); in manifest_dump()
742 if (!mf) { in manifest_dump()
752 fprintf(stream, "Version: %u\n", mf->version); in manifest_dump()
753 fprintf(stream, "Hash size: %u\n", (unsigned)mf->hash_size); in manifest_dump()
754 fprintf(stream, "Reserved field: %u\n", (unsigned)mf->reserved); in manifest_dump()
755 fprintf(stream, "File paths (%u):\n", (unsigned)mf->n_files); in manifest_dump()
756 for (unsigned i = 0; i < mf->n_files; ++i) { in manifest_dump()
757 fprintf(stream, " %u: %s\n", i, mf->files[i]); in manifest_dump()
759 fprintf(stream, "File infos (%u):\n", (unsigned)mf->n_file_infos); in manifest_dump()
760 for (unsigned i = 0; i < mf->n_file_infos; ++i) { in manifest_dump()
763 fprintf(stream, " Path index: %u\n", mf->file_infos[i].index); in manifest_dump()
764 hash = format_hash_as_string(mf->file_infos[i].hash, -1); in manifest_dump()
767 fprintf(stream, " Size: %u\n", mf->file_infos[i].size); in manifest_dump()
768 fprintf(stream, " Mtime: %lld\n", (long long)mf->file_infos[i].mtime); in manifest_dump()
769 fprintf(stream, " Ctime: %lld\n", (long long)mf->file_infos[i].ctime); in manifest_dump()
771 fprintf(stream, "Results (%u):\n", (unsigned)mf->n_objects); in manifest_dump()
772 for (unsigned i = 0; i < mf->n_objects; ++i) { in manifest_dump()
776 for (unsigned j = 0; j < mf->objects[i].n_file_info_indexes; ++j) { in manifest_dump()
777 fprintf(stream, " %u", mf->objects[i].file_info_indexes[j]); in manifest_dump()
780 hash = format_hash_as_string(mf->objects[i].hash.hash, -1); in manifest_dump()
783 fprintf(stream, " Size: %u\n", (unsigned)mf->objects[i].hash.size); in manifest_dump()
789 if (mf) { in manifest_dump()
790 free_manifest(mf); in manifest_dump()