]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Treat ENOSYS as ENOTSUP for optional features to avoid fatal errors.
authorAndreas Henriksson <andreas@fatal.se>
Tue, 20 Jul 2010 09:13:39 +0000 (05:13 -0400)
committerAndreas Henriksson <andreas@fatal.se>
Tue, 20 Jul 2010 09:13:39 +0000 (05:13 -0400)
This fixes libarchive on (Debian GNU/Linux) HPPA,
where ENOSYS is returned for xattrs.

See http://code.google.com/p/libarchive/issues/detail?id=102
and original report at
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=588925#10

SVN-Revision: 2537

libarchive/archive_read_disk_entry_from_file.c
libarchive/archive_write_disk.c

index 4d089797c72873fb1da963a639f5cc486d3e600d..f552f3767ce3da2a8b563d86f81a07588083acbe 100644 (file)
@@ -557,7 +557,7 @@ setup_xattrs(struct archive_read_disk *a,
                list_size = listxattr(path, NULL, 0);
 
        if (list_size == -1) {
-               if (errno == ENOTSUP)
+               if (errno == ENOTSUP || errno == ENOSYS)
                        return (ARCHIVE_OK);
                archive_set_error(&a->archive, errno,
                        "Couldn't list extended attributes");
index 5354025c800419fa909887e8a4daf60e13292631..8b86f70de148a1d535d8d400035e454985ad25d6 100644 (file)
@@ -2638,7 +2638,7 @@ set_xattrs(struct archive_write_disk *a)
                                    name, value, size, 0);
                        }
                        if (e == -1) {
-                               if (errno == ENOTSUP) {
+                               if (errno == ENOTSUP || errno == ENOSYS) {
                                        if (!warning_done) {
                                                warning_done = 1;
                                                archive_set_error(&a->archive, errno,
@@ -2705,7 +2705,7 @@ set_xattrs(struct archive_write_disk *a)
                                    namespace, name, value, size);
                        }
                        if (e != (int)size) {
-                               if (errno == ENOTSUP) {
+                               if (errno == ENOTSUP || errno == ENOSYS) {
                                        if (!warning_done) {
                                                warning_done = 1;
                                                archive_set_error(&a->archive, errno,