View | Details | Raw Unified | Return to bug 233006
Collapse All | Expand All

(-)libarchive/archive_read_disk_posix.c (-1 / +22 lines)
Lines 856-862 next_entry(struct archive_read_disk *a, Link Here
856
	const struct stat *st; /* info to use for this entry */
856
	const struct stat *st; /* info to use for this entry */
857
	const struct stat *lst;/* lstat() information */
857
	const struct stat *lst;/* lstat() information */
858
	const char *name;
858
	const char *name;
859
	int descend, r;
859
	int delayed, delayed_errno, descend, r;
860
	struct archive_string delayed_str;
861
862
	delayed = ARCHIVE_OK;
863
	archive_string_init(&delayed_str);
860
864
861
	st = NULL;
865
	st = NULL;
862
	lst = NULL;
866
	lst = NULL;
Lines 885-895 next_entry(struct archive_read_disk *a, Link Here
885
		case TREE_REGULAR:
889
		case TREE_REGULAR:
886
			lst = tree_current_lstat(t);
890
			lst = tree_current_lstat(t);
887
			if (lst == NULL) {
891
			if (lst == NULL) {
892
			    if (errno == ENOENT) {
893
				delayed = ARCHIVE_WARN;
894
				delayed_errno = errno;
895
				archive_string_sprintf(&delayed_str,
896
				    "%s: File removed before we read it",
897
				    tree_current_path(t));
898
			    } else {
888
				archive_set_error(&a->archive, errno,
899
				archive_set_error(&a->archive, errno,
889
				    "%s: Cannot stat",
900
				    "%s: Cannot stat",
890
				    tree_current_path(t));
901
				    tree_current_path(t));
891
				tree_enter_initial_dir(t);
902
				tree_enter_initial_dir(t);
892
				return (ARCHIVE_FAILED);
903
				return (ARCHIVE_FAILED);
904
			    }
893
			}
905
			}
894
			break;
906
			break;
895
		}	
907
		}	
Lines 1083-1088 next_entry(struct archive_read_disk *a, Link Here
1083
	r = archive_read_disk_entry_from_file(&(a->archive), entry,
1095
	r = archive_read_disk_entry_from_file(&(a->archive), entry,
1084
		t->entry_fd, st);
1096
		t->entry_fd, st);
1085
1097
1098
	if (r == ARCHIVE_OK) {
1099
		r = delayed;
1100
		if (r != ARCHIVE_OK)
1101
			archive_set_error(&(a->archive), delayed_errno,
1102
			    "%s", delayed_str.s);
1103
	}
1104
	if (!archive_string_empty(&delayed_str))
1105
		archive_string_free(&delayed_str);
1106
1086
	return (r);
1107
	return (r);
1087
}
1108
}
1088
1109

Return to bug 233006