free_cache(cpio->gname_cache);
free_cache(cpio->uname_cache);
- return (0);
+ return (cpio->return_value);
}
static void
archive_entry_copy_sourcepath(entry, srcpath);
r = archive_read_disk_entry_from_file(cpio->archive_read_disk,
entry, -1, NULL);
- if (r < ARCHIVE_WARN)
- lafe_errc(1, 0, "%s", archive_error_string(cpio->archive));
+ if (r < ARCHIVE_FAILED)
+ lafe_errc(1, 0, "%s",
+ archive_error_string(cpio->archive_read_disk));
if (r < ARCHIVE_OK)
- lafe_warnc(0, "%s", archive_error_string(cpio->archive));
+ lafe_warnc(0, "%s",
+ archive_error_string(cpio->archive_read_disk));
+ if (r <= ARCHIVE_FAILED) {
+ cpio->return_value = 1;
+ return (r);
+ }
if (cpio->uid_override >= 0)
archive_entry_set_uid(entry, cpio->uid_override);
*/
#if HAVE_FSTAT
if (fd >= 0) {
- if (fstat(fd, &s) != 0)
- return (ARCHIVE_FATAL);
+ if (fstat(fd, &s) != 0) {
+ archive_set_error(&a->archive, errno,
+ "Can't fstat");
+ return (ARCHIVE_FAILED);
+ }
} else
#endif
#if HAVE_LSTAT
if (!a->follow_symlinks) {
- if (lstat(path, &s) != 0)
- return (ARCHIVE_FATAL);
+ if (lstat(path, &s) != 0) {
+ archive_set_error(&a->archive, errno,
+ "Can't lstat %s", path);
+ return (ARCHIVE_FAILED);
+ }
} else
#endif
- if (stat(path, &s) != 0)
- return (ARCHIVE_FATAL);
+ if (stat(path, &s) != 0) {
+ archive_set_error(&a->archive, errno,
+ "Can't lstat %s", path);
+ return (ARCHIVE_FAILED);
+ }
st = &s;
}
archive_entry_copy_stat(entry, st);
if (lnklen < 0) {
archive_set_error(&a->archive, errno,
"Couldn't read link data");
- return (ARCHIVE_WARN);
+ return (ARCHIVE_FAILED);
}
linkbuffer[lnklen] = 0;
archive_entry_set_symlink(entry, linkbuffer);