Lines Matching refs:header

51  * Layout of POSIX 'ustar' tar header.
62 char linkname[100]; /* "old format" header ends here */
73 * Structure of GNU tar header
167 const struct archive_entry_header_gnutar *header, size_t *);
360 const struct archive_entry_header_ustar *header;
366 /* Now let's look at the actual header and see if it matches. */
386 header = (const struct archive_entry_header_ustar *)h;
389 if ((memcmp(header->magic, "ustar\0", 6) == 0)
390 && (memcmp(header->version, "00", 2) == 0))
394 if ((memcmp(header->magic, "ustar ", 6) == 0)
395 && (memcmp(header->version, " \0", 2) == 0))
399 if (header->typeflag[0] != 0 &&
400 !( header->typeflag[0] >= '0' && header->typeflag[0] <= '9') &&
401 !( header->typeflag[0] >= 'A' && header->typeflag[0] <= 'Z') &&
402 !( header->typeflag[0] >= 'a' && header->typeflag[0] <= 'z') )
409 if (validate_number_field(header->mode, sizeof(header->mode)) == 0
410 || validate_number_field(header->uid, sizeof(header->uid)) == 0
411 || validate_number_field(header->gid, sizeof(header->gid)) == 0
412 || validate_number_field(header->mtime, sizeof(header->mtime)) == 0
413 || validate_number_field(header->size, sizeof(header->size)) == 0
414 || validate_number_field(header->rdevmajor, sizeof(header->rdevmajor)) == 0
415 || validate_number_field(header->rdevminor, sizeof(header->rdevminor)) == 0) {
701 const struct archive_entry_header_ustar *header;
706 /* Loop until we find a workable header record. */
710 /* Read 512-byte header record */
755 * crude way to search for the next valid header!
757 * TODO: Improve this by implementing a real header scan.
762 return (ARCHIVE_RETRY); /* Retryable: Invalid header */
772 header = (const struct archive_entry_header_ustar *)h;
774 switch(header->typeflag[0]) {
780 case 'g': /* POSIX-standard 'g' header. */
793 case 'V': /* GNU volume header */
804 case 'x': /* POSIX-standard 'x' header. */
815 } else if (memcmp(header->magic, "ustar", 5) == 0) {
833 header = NULL;
873 /* EOF when recursively reading a header is bad. */
877 /* If we encounter just a GNU volume header treat
892 const struct archive_entry_header_ustar *header;
898 header = (const struct archive_entry_header_ustar *)h;
901 for (i = 0; i < sizeof(header->checksum); ++i) {
902 char c = header->checksum[i];
911 sum = (int)tar_atol(header->checksum, sizeof(header->checksum));
955 * Interpret 'A' Solaris ACL header
961 const struct archive_entry_header_ustar *header;
971 header = (const struct archive_entry_header_ustar *)h;
972 size = (size_t)tar_atol(header->size, sizeof(header->size));
977 /* Recursively read next header */
1056 * Interpret 'K' long linkname header.
1091 * Interpret 'L' long filename header.
1102 /* Read and parse "real" header, then override name. */
1114 * Interpret 'V' GNU tar volume header.
1122 /* Just skip this and read the next header. */
1134 const struct archive_entry_header_ustar *header;
1138 header = (const struct archive_entry_header_ustar *)h;
1139 size = tar_atol(header->size, sizeof(header->size));
1142 "Special header too large");
1169 * Parse out common header elements.
1182 const struct archive_entry_header_ustar *header;
1186 header = (const struct archive_entry_header_ustar *)h;
1187 if (header->linkname[0])
1189 header->linkname, sizeof(header->linkname));
1195 (mode_t)tar_atol(header->mode, sizeof(header->mode)));
1196 archive_entry_set_uid(entry, tar_atol(header->uid, sizeof(header->uid)));
1197 archive_entry_set_gid(entry, tar_atol(header->gid, sizeof(header->gid)));
1198 tar->entry_bytes_remaining = tar_atol(header->size, sizeof(header->size));
1214 archive_entry_set_mtime(entry, tar_atol(header->mtime, sizeof(header->mtime)), 0);
1217 tartype = header->typeflag[0];
1267 * function sees a valid ustar header
1365 * Parse out header elements for "old-style" tar archives.
1371 const struct archive_entry_header_ustar *header;
1375 header = (const struct archive_entry_header_ustar *)h;
1377 header->name, sizeof(header->name), tar->sconv) != 0) {
1447 * TODO: Look beyond the body here to peek at the next header.
1448 * If it's a regular header (not an extension header)
1470 * Parse a file header for a pax extended archive entry.
1495 /* Parse the next header. */
1504 * This design (parse standard header, then overwrite with pax
1507 * and then skip any fields in the standard header that were
1508 * defined in the pax header.
1518 * Parse a file header for a Posix "ustar" archive entry. This also
1525 const struct archive_entry_header_ustar *header;
1529 header = (const struct archive_entry_header_ustar *)h;
1533 if (header->prefix[0]) {
1534 archive_strncpy(as, header->prefix, sizeof(header->prefix));
1537 archive_strncat(as, header->name, sizeof(header->name));
1539 archive_strncpy(as, header->name, sizeof(header->name));
1557 header->uname, sizeof(header->uname), tar->sconv) != 0) {
1564 header->gname, sizeof(header->gname), tar->sconv) != 0) {
1571 if (header->typeflag[0] == '3' || header->typeflag[0] == '4') {
1573 tar_atol(header->rdevmajor, sizeof(header->rdevmajor)));
1575 tar_atol(header->rdevminor, sizeof(header->rdevminor)));
1684 * unless hdrcharset=BINARY is present in its header.
1686 * when the hdrcharset attribute(in PAX header) is BINARY because
1687 * we respect the charset described in PAX header and BINARY also
1990 /* GNU tar uses RHT.security header to store SELinux xattrs
2127 * The "size" pax header keyword always overrides the
2128 * "size" field in the tar header.
2205 * Parse GNU tar header
2211 const struct archive_entry_header_gnutar *header;
2216 * GNU header is like POSIX ustar, except 'prefix' is
2227 header = (const struct archive_entry_header_gnutar *)h;
2229 header->name, sizeof(header->name), tar->sconv) != 0) {
2240 header->uname, sizeof(header->uname), tar->sconv) != 0) {
2247 header->gname, sizeof(header->gname), tar->sconv) != 0) {
2254 if (header->typeflag[0] == '3' || header->typeflag[0] == '4') {
2256 tar_atol(header->rdevmajor, sizeof(header->rdevmajor)));
2258 tar_atol(header->rdevminor, sizeof(header->rdevminor)));
2265 t = tar_atol(header->atime, sizeof(header->atime));
2268 t = tar_atol(header->ctime, sizeof(header->ctime));
2272 if (header->realsize[0] != 0) {
2274 = tar_atol(header->realsize, sizeof(header->realsize));
2279 if (header->sparse[0].offset[0] != 0) {
2280 if (gnu_sparse_old_read(a, tar, header, unconsumed)
2284 if (header->isextended[0] != 0) {
2335 * format as 'size' field in ustart header). These are
2336 * stored in the header, allocating subsequent header blocks
2337 * as needed. Extending the header in this way is a pretty
2344 const struct archive_entry_header_gnutar *header, size_t *unconsumed)
2355 if (gnu_sparse_old_parse(a, tar, header->sparse, 4) != ARCHIVE_OK)
2357 if (header->isextended[0] == 0)
2401 * information in the pax extended header. The GNU tar maintainers