Lines Matching refs:res

101 	struct archive_entry_linkresolver *res;  in archive_entry_linkresolver_new()  local
108 res = calloc(1, sizeof(struct archive_entry_linkresolver)); in archive_entry_linkresolver_new()
109 if (res == NULL) in archive_entry_linkresolver_new()
111 res->number_buckets = links_cache_initial_size; in archive_entry_linkresolver_new()
112 res->buckets = calloc(res->number_buckets, sizeof(res->buckets[0])); in archive_entry_linkresolver_new()
113 if (res->buckets == NULL) { in archive_entry_linkresolver_new()
114 free(res); in archive_entry_linkresolver_new()
117 return (res); in archive_entry_linkresolver_new()
121 archive_entry_linkresolver_set_strategy(struct archive_entry_linkresolver *res, in archive_entry_linkresolver_set_strategy() argument
130 res->strategy = ARCHIVE_ENTRY_LINKIFY_LIKE_OLD_CPIO; in archive_entry_linkresolver_set_strategy()
136 res->strategy = ARCHIVE_ENTRY_LINKIFY_LIKE_NEW_CPIO; in archive_entry_linkresolver_set_strategy()
139 res->strategy = ARCHIVE_ENTRY_LINKIFY_LIKE_OLD_CPIO; in archive_entry_linkresolver_set_strategy()
144 res->strategy = ARCHIVE_ENTRY_LINKIFY_LIKE_MTREE; in archive_entry_linkresolver_set_strategy()
150 res->strategy = ARCHIVE_ENTRY_LINKIFY_LIKE_TAR; in archive_entry_linkresolver_set_strategy()
153 res->strategy = ARCHIVE_ENTRY_LINKIFY_LIKE_OLD_CPIO; in archive_entry_linkresolver_set_strategy()
159 archive_entry_linkresolver_free(struct archive_entry_linkresolver *res) in archive_entry_linkresolver_free() argument
163 if (res == NULL) in archive_entry_linkresolver_free()
166 while ((le = next_entry(res, NEXT_ENTRY_ALL)) != NULL) in archive_entry_linkresolver_free()
168 free(res->buckets); in archive_entry_linkresolver_free()
169 free(res); in archive_entry_linkresolver_free()
173 archive_entry_linkify(struct archive_entry_linkresolver *res, in archive_entry_linkify() argument
182 le = next_entry(res, NEXT_ENTRY_DEFERRED); in archive_entry_linkify()
199 switch (res->strategy) { in archive_entry_linkify()
201 le = find_entry(res, *e); in archive_entry_linkify()
207 insert_entry(res, *e); in archive_entry_linkify()
210 le = find_entry(res, *e); in archive_entry_linkify()
215 insert_entry(res, *e); in archive_entry_linkify()
221 le = find_entry(res, *e); in archive_entry_linkify()
245 le = insert_entry(res, *e); in archive_entry_linkify()
260 find_entry(struct archive_entry_linkresolver *res, in find_entry() argument
269 if (res->spare != NULL) { in find_entry()
270 archive_entry_free(res->spare->canonical); in find_entry()
271 archive_entry_free(res->spare->entry); in find_entry()
272 free(res->spare); in find_entry()
273 res->spare = NULL; in find_entry()
281 bucket = hash & (res->number_buckets - 1); in find_entry()
282 for (le = res->buckets[bucket]; le != NULL; le = le->next) { in find_entry()
300 if (res->buckets[bucket] == le) in find_entry()
301 res->buckets[bucket] = le->next; in find_entry()
302 res->number_entries--; in find_entry()
304 res->spare = le; in find_entry()
312 next_entry(struct archive_entry_linkresolver *res, int mode) in next_entry() argument
318 if (res->spare != NULL) { in next_entry()
319 archive_entry_free(res->spare->canonical); in next_entry()
320 archive_entry_free(res->spare->entry); in next_entry()
321 free(res->spare); in next_entry()
322 res->spare = NULL; in next_entry()
326 for (bucket = 0; bucket < res->number_buckets; bucket++) { in next_entry()
327 for (le = res->buckets[bucket]; le != NULL; le = le->next) { in next_entry()
340 res->buckets[bucket] = le->next; in next_entry()
341 res->number_entries--; in next_entry()
343 res->spare = le; in next_entry()
351 insert_entry(struct archive_entry_linkresolver *res, in insert_entry() argument
364 if (res->number_entries > res->number_buckets * 2) in insert_entry()
365 grow_hash(res); in insert_entry()
368 bucket = hash & (res->number_buckets - 1); in insert_entry()
371 if (res->buckets[bucket] != NULL) in insert_entry()
372 res->buckets[bucket]->previous = le; in insert_entry()
373 res->number_entries++; in insert_entry()
374 le->next = res->buckets[bucket]; in insert_entry()
376 res->buckets[bucket] = le; in insert_entry()
383 grow_hash(struct archive_entry_linkresolver *res) in grow_hash() argument
390 new_size = res->number_buckets * 2; in grow_hash()
391 if (new_size < res->number_buckets) in grow_hash()
398 for (i = 0; i < res->number_buckets; i++) { in grow_hash()
399 while (res->buckets[i] != NULL) { in grow_hash()
401 le = res->buckets[i]; in grow_hash()
402 res->buckets[i] = le->next; in grow_hash()
414 free(res->buckets); in grow_hash()
415 res->buckets = new_buckets; in grow_hash()
416 res->number_buckets = new_size; in grow_hash()
420 archive_entry_partial_links(struct archive_entry_linkresolver *res, in archive_entry_partial_links() argument
427 if (res->spare != NULL) { in archive_entry_partial_links()
428 archive_entry_free(res->spare->canonical); in archive_entry_partial_links()
429 archive_entry_free(res->spare->entry); in archive_entry_partial_links()
430 free(res->spare); in archive_entry_partial_links()
431 res->spare = NULL; in archive_entry_partial_links()
434 le = next_entry(res, NEXT_ENTRY_PARTIAL); in archive_entry_partial_links()