Lines Matching refs:bsdtar
102 static void only_mode(struct bsdtar *, const char *opt,
104 static void set_mode(struct bsdtar *, char opt);
137 struct bsdtar *bsdtar, bsdtar_storage; in main() local
151 bsdtar = &bsdtar_storage; in main()
152 memset(bsdtar, 0, sizeof(*bsdtar)); in main()
153 bsdtar->fd = -1; /* Mark as "unused" */ in main()
154 bsdtar->gid = -1; in main()
155 bsdtar->uid = -1; in main()
156 bsdtar->flags = 0; in main()
192 bsdtar->day_first = (*nl_langinfo(D_MD_ORDER) == 'd'); in main()
197 bsdtar->user_uid = geteuid(); in main()
200 bsdtar->filename = getenv("TAPE"); in main()
202 if (bsdtar->filename == NULL) { in main()
209 bsdtar->filename = _PATH_DEFTAPE; in main()
213 if (bsdtar->filename == NULL) { in main()
214 bsdtar->filename = _PATH_STDIO; in main()
218 bsdtar->bytes_per_block = DEFAULT_BYTES_PER_BLOCK; in main()
220 bsdtar->bytes_in_last_block = -1; in main()
223 bsdtar->extract_flags = ARCHIVE_EXTRACT_TIME; in main()
226 bsdtar->extract_flags |= SECURITY; in main()
231 if (bsdtar->user_uid == 0) { in main()
233 bsdtar->extract_flags |= ARCHIVE_EXTRACT_OWNER; in main()
235 bsdtar->extract_flags |= ARCHIVE_EXTRACT_PERM; in main()
236 bsdtar->extract_flags |= ARCHIVE_EXTRACT_ACL; in main()
237 bsdtar->extract_flags |= ARCHIVE_EXTRACT_XATTR; in main()
238 bsdtar->extract_flags |= ARCHIVE_EXTRACT_FFLAGS; in main()
239 bsdtar->extract_flags |= ARCHIVE_EXTRACT_MAC_METADATA; in main()
247 bsdtar->readdisk_flags |= ARCHIVE_READDISK_MAC_COPYFILE; in main()
250 bsdtar->readdisk_flags &= ~ARCHIVE_READDISK_MAC_COPYFILE; in main()
257 bsdtar->readdisk_flags |= ARCHIVE_READDISK_NO_ACL; in main()
260 bsdtar->matching = archive_match_new(); in main()
261 if (bsdtar->matching == NULL) in main()
263 bsdtar->cset = cset_new(); in main()
264 if (bsdtar->cset == NULL) in main()
267 bsdtar->argv = argv; in main()
268 bsdtar->argc = argc; in main()
276 while ((opt = bsdtar_getopt(bsdtar)) != -1) { in main()
279 bsdtar->flags |= OPTFLAG_AUTO_COMPRESS; in main()
282 bsdtar->extract_flags |= ARCHIVE_EXTRACT_ACL; in main()
283 bsdtar->readdisk_flags &= ~ARCHIVE_READDISK_NO_ACL; in main()
284 bsdtar->flags |= OPTFLAG_ACLS; in main()
291 l = strtol(bsdtar->argument, &tptr, 10); in main()
293 *(bsdtar->argument) == '\0' || tptr == NULL || in main()
298 bsdtar->bytes_per_block = 512 * (int)l; in main()
300 bsdtar->bytes_in_last_block = bsdtar->bytes_per_block; in main()
311 if (strlen(bsdtar->argument) == 0) in main()
315 set_chdir(bsdtar, bsdtar->argument); in main()
318 set_mode(bsdtar, opt); in main()
321 bsdtar->flags |= OPTFLAG_WARN_LINKS; in main()
324 bsdtar->flags |= OPTFLAG_CHROOT; in main()
327 bsdtar->extract_flags |= in main()
332 bsdtar->matching, bsdtar->argument) != ARCHIVE_OK) in main()
334 "Couldn't exclude %s\n", bsdtar->argument); in main()
339 bsdtar->matching, in main()
346 bsdtar->extract_flags |= ARCHIVE_EXTRACT_FFLAGS; in main()
347 bsdtar->readdisk_flags &= ~ARCHIVE_READDISK_NO_FFLAGS; in main()
348 bsdtar->flags |= OPTFLAG_FFLAGS; in main()
351 cset_set_format(bsdtar->cset, bsdtar->argument); in main()
354 bsdtar->filename = bsdtar->argument; in main()
358 l = strtol(bsdtar->argument, &tptr, 10); in main()
359 if (l < 0 || l >= INT_MAX || *(bsdtar->argument) == '\0' || in main()
363 bsdtar->gid = (int)l; in main()
366 bsdtar->gname = bsdtar->argument; in main()
371 uptr = strchr(bsdtar->argument, ':'); in main()
383 bsdtar->gid = (int)l; in main()
385 bsdtar->gname = bsdtar->argument; in main()
387 l = strtol(bsdtar->argument, &tptr, 10); in main()
388 if (l < 0 || l >= INT_MAX || *(bsdtar->argument) == '\0' || in main()
390 bsdtar->gname = bsdtar->argument; in main()
392 bsdtar->gid = (int)l; in main()
393 bsdtar->gname = ""; in main()
406 bsdtar->symlink_mode = 'H'; in main()
409 bsdtar->symlink_mode = 'L'; in main()
417 bsdtar->extract_flags |= in main()
421 bsdtar->flags |= OPTFLAG_IGNORE_ZEROS; in main()
434 bsdtar->names_from_file = bsdtar->argument; in main()
442 if (archive_match_include_pattern(bsdtar->matching, in main()
443 bsdtar->argument) != ARCHIVE_OK) in main()
446 bsdtar->argument); in main()
465 bsdtar->extract_flags |= ARCHIVE_EXTRACT_NO_OVERWRITE; in main()
468 bsdtar->extract_flags |= ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER; in main()
471 bsdtar->symlink_mode = 'L'; in main()
475 bsdtar->flags |= OPTFLAG_WARN_LINKS; in main()
498 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_TIME; in main()
501 bsdtar->readdisk_flags |= ARCHIVE_READDISK_MAC_COPYFILE; in main()
502 bsdtar->extract_flags |= ARCHIVE_EXTRACT_MAC_METADATA; in main()
503 bsdtar->flags |= OPTFLAG_MAC_METADATA; in main()
506 bsdtar->flags |= OPTFLAG_NO_SUBDIRS; in main()
515 if (archive_match_include_date(bsdtar->matching, in main()
517 bsdtar->argument) != ARCHIVE_OK) in main()
519 archive_error_string(bsdtar->matching)); in main()
522 if (archive_match_include_file_time(bsdtar->matching, in main()
524 bsdtar->argument) != ARCHIVE_OK) in main()
526 archive_error_string(bsdtar->matching)); in main()
529 if (archive_match_include_date(bsdtar->matching, in main()
531 bsdtar->argument) != ARCHIVE_OK) in main()
533 archive_error_string(bsdtar->matching)); in main()
536 if (archive_match_include_file_time(bsdtar->matching, in main()
538 bsdtar->argument) != ARCHIVE_OK) in main()
540 archive_error_string(bsdtar->matching)); in main()
543 bsdtar->readdisk_flags |= ARCHIVE_READDISK_HONOR_NODUMP; in main()
547 bsdtar->extract_flags |= in main()
551 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_ACL; in main()
552 bsdtar->readdisk_flags |= ARCHIVE_READDISK_NO_ACL; in main()
553 bsdtar->flags |= OPTFLAG_NO_ACLS; in main()
556 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_FFLAGS; in main()
557 bsdtar->readdisk_flags |= ARCHIVE_READDISK_NO_FFLAGS; in main()
558 bsdtar->flags |= OPTFLAG_NO_FFLAGS; in main()
561 bsdtar->readdisk_flags &= ~ARCHIVE_READDISK_MAC_COPYFILE; in main()
562 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_MAC_METADATA; in main()
563 bsdtar->flags |= OPTFLAG_NO_MAC_METADATA; in main()
566 bsdtar->readdisk_flags |= ARCHIVE_READDISK_NO_SPARSE; in main()
567 bsdtar->flags |= OPTFLAG_NO_READ_SPARSE; in main()
570 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_SAFE_WRITES; in main()
573 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_OWNER; in main()
576 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_PERM; in main()
577 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_ACL; in main()
578 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_XATTR; in main()
579 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_FFLAGS; in main()
580 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_MAC_METADATA; in main()
583 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_XATTR; in main()
584 bsdtar->readdisk_flags |= ARCHIVE_READDISK_NO_XATTR; in main()
585 bsdtar->flags |= OPTFLAG_NO_XATTRS; in main()
588 bsdtar->flags |= OPTFLAG_NULL; in main()
591 bsdtar->uname = ""; in main()
592 bsdtar->gname = ""; in main()
593 bsdtar->flags |= OPTFLAG_NUMERIC_OWNER; in main()
596 bsdtar->flags |= OPTFLAG_STDOUT; in main()
599 bsdtar->flags |= OPTFLAG_O; in main()
608 if (archive_match_include_date(bsdtar->matching, in main()
610 bsdtar->argument) != ARCHIVE_OK) in main()
612 archive_error_string(bsdtar->matching)); in main()
615 if (archive_match_include_file_time(bsdtar->matching, in main()
617 bsdtar->argument) != ARCHIVE_OK) in main()
619 archive_error_string(bsdtar->matching)); in main()
622 if (archive_match_include_date(bsdtar->matching, in main()
624 bsdtar->argument) != ARCHIVE_OK) in main()
626 archive_error_string(bsdtar->matching)); in main()
629 if (archive_match_include_file_time(bsdtar->matching, in main()
631 bsdtar->argument) != ARCHIVE_OK) in main()
633 archive_error_string(bsdtar->matching)); in main()
636 bsdtar->readdisk_flags |= in main()
640 if (bsdtar->option_options != NULL) { in main()
643 bsdtar->option_options); in main()
645 bsdtar->option_options = bsdtar->argument; in main()
650 uptr = strchr(bsdtar->argument, ':'); in main()
662 bsdtar->uid = (int)l; in main()
664 bsdtar->uname = bsdtar->argument; in main()
666 l = strtol(bsdtar->argument, &tptr, 10); in main()
667 if (l < 0 || l >= INT_MAX || *(bsdtar->argument) == '\0' || in main()
669 bsdtar->uname = bsdtar->argument; in main()
671 bsdtar->uid = (int)l; in main()
672 bsdtar->uname = ""; in main()
688 bsdtar->extract_flags &= ~SECURITY; in main()
689 bsdtar->flags |= OPTFLAG_ABSOLUTE_PATHS; in main()
692 bsdtar->extract_flags |= ARCHIVE_EXTRACT_PERM; in main()
693 bsdtar->extract_flags |= ARCHIVE_EXTRACT_ACL; in main()
694 bsdtar->extract_flags |= ARCHIVE_EXTRACT_XATTR; in main()
695 bsdtar->extract_flags |= ARCHIVE_EXTRACT_FFLAGS; in main()
696 bsdtar->extract_flags |= ARCHIVE_EXTRACT_MAC_METADATA; in main()
699 bsdtar->passphrase = bsdtar->argument; in main()
702 cset_set_format(bsdtar->cset, "pax"); in main()
705 bsdtar->flags |= OPTFLAG_FAST_READ; in main()
708 set_mode(bsdtar, opt); in main()
711 bsdtar->readdisk_flags &= ~ARCHIVE_READDISK_NO_SPARSE; in main()
712 bsdtar->flags |= OPTFLAG_READ_SPARSE; in main()
715 bsdtar->extract_flags |= ARCHIVE_EXTRACT_SPARSE; in main()
719 add_substitution(bsdtar, bsdtar->argument); in main()
727 bsdtar->extract_flags |= ARCHIVE_EXTRACT_SAFE_WRITES; in main()
730 bsdtar->extract_flags |= ARCHIVE_EXTRACT_OWNER; in main()
734 l = strtol(bsdtar->argument, &tptr, 10); in main()
735 if (l < 0 || l > 100000L || *(bsdtar->argument) == '\0' || in main()
740 bsdtar->strip_components = (int)l; in main()
743 bsdtar->names_from_file = bsdtar->argument; in main()
746 set_mode(bsdtar, opt); in main()
747 bsdtar->verbose++; in main()
750 bsdtar->flags |= OPTFLAG_TOTALS; in main()
753 bsdtar->extract_flags |= ARCHIVE_EXTRACT_UNLINK; in main()
754 bsdtar->flags |= OPTFLAG_UNLINK_FIRST; in main()
757 set_mode(bsdtar, opt); in main()
761 l = strtol(bsdtar->argument, &tptr, 10); in main()
762 if (l < 0 || l >= INT_MAX || *(bsdtar->argument) == '\0' || in main()
766 bsdtar->uid = (int)l; in main()
769 bsdtar->uname = bsdtar->argument; in main()
780 bsdtar->verbose++; in main()
794 bsdtar->flags |= OPTFLAG_INTERACTIVE; in main()
798 bsdtar->matching, bsdtar->argument, 0) in main()
801 archive_error_string(bsdtar->matching)); in main()
804 set_mode(bsdtar, opt); in main()
807 bsdtar->extract_flags |= ARCHIVE_EXTRACT_XATTR; in main()
808 bsdtar->readdisk_flags &= ~ARCHIVE_READDISK_NO_XATTR; in main()
809 bsdtar->flags |= OPTFLAG_XATTRS; in main()
836 compress_program = bsdtar->argument; in main()
848 if ((bsdtar->mode == '\0') && possible_help_request) { in main()
853 if (bsdtar->mode == '\0') in main()
858 if (bsdtar->flags & OPTFLAG_AUTO_COMPRESS) { in main()
859 only_mode(bsdtar, "-a", "cx"); in main()
860 if (bsdtar->mode == 'x') { in main()
861 bsdtar->flags &= ~OPTFLAG_AUTO_COMPRESS; in main()
866 if (bsdtar->readdisk_flags & ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS) in main()
867 only_mode(bsdtar, "--one-file-system", "cru"); in main()
868 if (bsdtar->flags & OPTFLAG_FAST_READ) in main()
869 only_mode(bsdtar, "--fast-read", "xt"); in main()
870 if (bsdtar->extract_flags & ARCHIVE_EXTRACT_HFS_COMPRESSION_FORCED) in main()
871 only_mode(bsdtar, "--hfsCompression", "x"); in main()
872 if (bsdtar->extract_flags & ARCHIVE_EXTRACT_NO_HFS_COMPRESSION) in main()
873 only_mode(bsdtar, "--nopreserveHFSCompression", "x"); in main()
874 if (bsdtar->readdisk_flags & ARCHIVE_READDISK_HONOR_NODUMP) in main()
875 only_mode(bsdtar, "--nodump", "cru"); in main()
876 if (bsdtar->flags & OPTFLAG_ACLS) in main()
877 only_mode(bsdtar, "--acls", "crux"); in main()
878 if (bsdtar->flags & OPTFLAG_NO_ACLS) in main()
879 only_mode(bsdtar, "--no-acls", "crux"); in main()
880 if (bsdtar->flags & OPTFLAG_XATTRS) in main()
881 only_mode(bsdtar, "--xattrs", "crux"); in main()
882 if (bsdtar->flags & OPTFLAG_NO_XATTRS) in main()
883 only_mode(bsdtar, "--no-xattrs", "crux"); in main()
884 if (bsdtar->flags & OPTFLAG_FFLAGS) in main()
885 only_mode(bsdtar, "--fflags", "crux"); in main()
886 if (bsdtar->flags & OPTFLAG_NO_FFLAGS) in main()
887 only_mode(bsdtar, "--no-fflags", "crux"); in main()
888 if (bsdtar->flags & OPTFLAG_MAC_METADATA) in main()
889 only_mode(bsdtar, "--mac-metadata", "crux"); in main()
890 if (bsdtar->flags & OPTFLAG_NO_MAC_METADATA) in main()
891 only_mode(bsdtar, "--no-mac-metadata", "crux"); in main()
892 if (bsdtar->flags & OPTFLAG_O) { in main()
893 switch (bsdtar->mode) { in main()
900 cset_set_format(bsdtar->cset, "ustar"); in main()
905 bsdtar->flags |= OPTFLAG_NO_OWNER; in main()
906 bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_OWNER; in main()
909 only_mode(bsdtar, "-o", "xc"); in main()
913 if (bsdtar->flags & OPTFLAG_STDOUT) in main()
914 only_mode(bsdtar, "-O", "xt"); in main()
915 if (bsdtar->flags & OPTFLAG_UNLINK_FIRST) in main()
916 only_mode(bsdtar, "-U", "x"); in main()
917 if (bsdtar->flags & OPTFLAG_WARN_LINKS) in main()
918 only_mode(bsdtar, "--check-links", "cr"); in main()
920 if ((bsdtar->flags & OPTFLAG_AUTO_COMPRESS) && in main()
921 cset_auto_compress(bsdtar->cset, bsdtar->filename)) { in main()
928 only_mode(bsdtar, "--use-compress-program", "cxt"); in main()
929 cset_add_filter_program(bsdtar->cset, compress_program); in main()
945 only_mode(bsdtar, buff, "cxt"); in main()
946 cset_add_filter(bsdtar->cset, compression_name); in main()
951 only_mode(bsdtar, buff, "cxt"); in main()
952 cset_add_filter(bsdtar->cset, compression2_name); in main()
954 if (cset_get_format(bsdtar->cset) != NULL) in main()
955 only_mode(bsdtar, "--format", "cru"); in main()
956 if (bsdtar->symlink_mode != '\0') { in main()
958 buff[1] = bsdtar->symlink_mode; in main()
959 only_mode(bsdtar, buff, "cru"); in main()
969 archive_match_set_inclusion_recursion(bsdtar->matching, in main()
970 !(bsdtar->flags & OPTFLAG_NO_SUBDIRS)); in main()
973 if (strcmp(bsdtar->filename, "-") == 0) in main()
974 bsdtar->filename = NULL; in main()
976 switch(bsdtar->mode) { in main()
978 tar_mode_c(bsdtar); in main()
981 tar_mode_r(bsdtar); in main()
984 tar_mode_t(bsdtar); in main()
987 tar_mode_u(bsdtar); in main()
990 tar_mode_x(bsdtar); in main()
994 archive_match_free(bsdtar->matching); in main()
996 cleanup_substitution(bsdtar); in main()
998 cset_free(bsdtar->cset); in main()
999 passphrase_free(bsdtar->ppbuff); in main()
1001 if (bsdtar->return_value != 0) in main()
1004 return (bsdtar->return_value); in main()
1008 set_mode(struct bsdtar *bsdtar, char opt) in set_mode() argument
1010 if (bsdtar->mode != '\0' && bsdtar->mode != opt) in set_mode()
1012 "Can't specify both -%c and -%c", opt, bsdtar->mode); in set_mode()
1013 bsdtar->mode = opt; in set_mode()
1020 only_mode(struct bsdtar *bsdtar, const char *opt, const char *valid_modes) in only_mode() argument
1022 if (strchr(valid_modes, bsdtar->mode) == NULL) in only_mode()
1025 opt, bsdtar->mode); in only_mode()