Lines Matching refs:tar
125 static void write_longname(struct archive_handler *tar, char *name, char type) in write_longname() argument
146 writeall(tar->src_fd, (void*) &tmp, sizeof(tmp)); in write_longname()
148 writeall(tar->src_fd, name, sz); in write_longname()
149 if (sz%512) writeall(tar->src_fd, buf, (512-(sz%512))); in write_longname()
161 static void add_file(struct archive_handler *tar, char **nam, struct stat *st) in add_file() argument
205 write_longname(tar, hname, 'K'); //write longname LINK in add_file()
223 write_longname(tar, hname, 'K'); //write longname LINK in add_file()
238 write_longname(tar, hname, 'L'); //write longname NAME in add_file()
252 writeall(tar->src_fd, (void*)&hdr, 512); in add_file()
260 copy_in_out(fd, tar->src_fd, st->st_size); in add_file()
261 if (st->st_size%512) writeall(tar->src_fd, buf, (512-(st->st_size%512))); in add_file()
308 static void extract_to_stdout(struct archive_handler *tar) in extract_to_stdout() argument
310 struct file_header *file_hdr = &tar->file_hdr; in extract_to_stdout()
312 copy_in_out(tar->src_fd, 0, file_hdr->size); in extract_to_stdout()
313 tar->offset += file_hdr->size; in extract_to_stdout()
316 static void extract_to_command(struct archive_handler *tar) in extract_to_command() argument
320 struct file_header *file_hdr = &tar->file_hdr; in extract_to_command()
352 copy_in_out(tar->src_fd, pipefd[1], file_hdr->size); in extract_to_command()
353 tar->offset += file_hdr->size; in extract_to_command()
361 static void extract_to_disk(struct archive_handler *tar) in extract_to_disk() argument
366 struct file_header *file_hdr = &tar->file_hdr; in extract_to_disk()
421 copy_in_out(tar->src_fd, dst_fd, file_hdr->size); in extract_to_disk()
422 tar->offset += file_hdr->size; in extract_to_disk()
522 static char *process_extended_hdr(struct archive_handler *tar, int size) in process_extended_hdr() argument
526 if (readall(tar->src_fd, buf, size) != size) error_exit("short read"); in process_extended_hdr()
528 tar->offset += size; in process_extended_hdr()
557 static void tar_skip(struct archive_handler *tar, int sz) in tar_skip() argument
561 while ((x = lskip(tar->src_fd, sz))) { in tar_skip()
562 tar->offset += sz - x; in tar_skip()
565 tar->offset += sz; in tar_skip()
570 struct tar_hdr tar; in unpack_tar() local
583 i = readall(tar_hdl->src_fd, &tar, 512); in unpack_tar()
590 if (!tar.name[0]) { in unpack_tar()
595 if (strncmp(tar.magic, "ustar", 5)) { in unpack_tar()
598 gzMagic = (unsigned char*)&tar; in unpack_tar()
608 for (j = 0; j<148; j++) cksum += (unsigned int)((char*)&tar)[j]; in unpack_tar()
609 for (j = 156; j<500; j++) cksum += (unsigned int)((char*)&tar)[j]; in unpack_tar()
613 if (cksum != otoi(tar.chksum, sizeof(tar.chksum))) error_exit("wrong cksum"); in unpack_tar()
617 file_hdr->mode = otoi(tar.mode, sizeof(tar.mode)); in unpack_tar()
618 file_hdr->uid = otoi(tar.uid, sizeof(tar.uid)); in unpack_tar()
619 file_hdr->gid = otoi(tar.gid, sizeof(tar.gid)); in unpack_tar()
620 file_hdr->size = otoi(tar.size, sizeof(tar.size)); in unpack_tar()
621 file_hdr->mtime = otoi(tar.mtime, sizeof(tar.mtime)); in unpack_tar()
622 file_hdr->uname = xstrdup(tar.uname); in unpack_tar()
623 file_hdr->gname = xstrdup(tar.gname); in unpack_tar()
624 maj = otoi(tar.major, sizeof(tar.major)); in unpack_tar()
625 min = otoi(tar.minor, sizeof(tar.minor)); in unpack_tar()
628 if (tar.type <= '7') { in unpack_tar()
629 if (tar.link[0]) { in unpack_tar()
630 sz = sizeof(tar.link); in unpack_tar()
632 memcpy(file_hdr->link_target, tar.link, sz); in unpack_tar()
637 if (tar.prefix[0]) { in unpack_tar()
638 memcpy(file_hdr->name, tar.prefix, sizeof(tar.prefix)); in unpack_tar()
643 memcpy(file_hdr->name + sz, tar.name, sizeof(tar.name)); in unpack_tar()
647 switch (tar.type) { in unpack_tar()