Lines Matching defs:ar

52 struct ar {
61 * Define structure of the "ar" header.
88 static int ar_parse_common_header(struct ar *ar, struct archive_entry *,
95 struct ar *ar;
98 ar = (struct ar *)malloc(sizeof(*ar));
99 if (ar == NULL) {
101 "Can't allocate ar data");
104 memset(ar, 0, sizeof(*ar));
105 ar->strtab = NULL;
108 ar,
109 "ar",
118 free(ar);
127 struct ar *ar;
129 ar = (struct ar *)(a->format->data);
130 if (ar->strtab)
131 free(ar->strtab);
132 free(ar);
164 struct ar *ar;
173 ar = (struct ar*)(a->format->data);
178 * so we need first consume the ar global header.
221 * XXX Do GNU/SVR4 'ar' programs ever omit trailing '/'
229 a->archive.archive_format_name = "ar (GNU/SVR4)";
231 a->archive.archive_format_name = "ar (BSD)";
233 a->archive.archive_format_name = "ar";
238 * This will only be wrong if GNU/SVR4 'ar' implementations
264 ar_parse_common_header(ar, entry, h);
280 if (ar->strtab != NULL) {
293 ar->strtab = st;
294 ar->strtab_size = entry_size;
300 ar->entry_bytes_remaining = 0;
301 archive_entry_set_size(entry, ar->entry_bytes_remaining);
319 if (ar->strtab == NULL || number > ar->strtab_size) {
324 ar_parse_common_header(ar, entry, h);
328 archive_entry_copy_pathname(entry, &ar->strtab[(size_t)number]);
330 return (ar_parse_common_header(ar, entry, h));
341 ar_parse_common_header(ar, entry, h);
350 || (off_t)bsd_name_length > ar->entry_bytes_remaining) {
355 ar->entry_bytes_remaining -= bsd_name_length;
357 archive_entry_set_size(entry, ar->entry_bytes_remaining);
387 r = ar_parse_common_header(ar, entry, h);
399 return (ar_parse_common_header(ar, entry, h));
408 return (ar_parse_common_header(ar, entry, h));
412 ar_parse_common_header(struct ar *ar, struct archive_entry *entry,
428 ar->entry_offset = 0;
429 ar->entry_padding = n % 2;
431 ar->entry_bytes_remaining = n;
440 struct ar *ar;
442 ar = (struct ar *)(a->format->data);
444 if (ar->entry_bytes_remaining > 0) {
448 "Truncated ar archive");
453 if (bytes_read > ar->entry_bytes_remaining)
454 bytes_read = (ssize_t)ar->entry_bytes_remaining;
456 *offset = ar->entry_offset;
457 ar->entry_offset += bytes_read;
458 ar->entry_bytes_remaining -= bytes_read;
462 while (ar->entry_padding > 0) {
466 if (bytes_read > ar->entry_padding)
467 bytes_read = (ssize_t)ar->entry_padding;
469 ar->entry_padding -= bytes_read;
473 *offset = ar->entry_offset;
482 struct ar* ar;
484 ar = (struct ar *)(a->format->data);
487 ar->entry_bytes_remaining + ar->entry_padding);
491 ar->entry_bytes_remaining = 0;
492 ar->entry_padding = 0;
500 struct ar *ar;
504 ar = (struct ar*)(a->format->data);
505 size = ar->strtab_size;
507 for (p = ar->strtab; p < ar->strtab + size - 1; ++p) {
516 * GNU ar always pads the table to an even size.
519 if (p != ar->strtab + size && *p != '\n' && *p != '`')
523 ar->strtab[size - 1] = '\0';
530 free(ar->strtab);
531 ar->strtab = NULL;