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 |
|