components/python/xattr/patches/solaris.patch
author Vladimir Marek <Vladimir.Marek@oracle.com>
Mon, 10 Apr 2017 11:54:32 -0700
branchs11u3-sru
changeset 7853 87236a3c36b4
parent 3114 f0074f08c8db
permissions -rw-r--r--
25694511 xattr can't be built on recent CBE
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3114
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     1
Patch needed for xattr to build properly on Solaris, with Studio compilers.
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     2
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     3
Merged as of 0.7.6.
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     4
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     5
diff --git a/xattr/lib.py b/xattr/lib.py
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     6
index 0466d30..390c333 100644
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     7
--- a/xattr/lib.py
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     8
+++ b/xattr/lib.py
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     9
@@ -29,12 +29,13 @@ lib = ffi.verify("""
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    10
 #include "Python.h"
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    11
 #ifdef __FreeBSD__
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    12
 #include <sys/extattr.h>
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    13
-#elif defined(__SUN__) || defined(__sun__) || defined(sun)
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    14
+#elif defined(__SUN__) || defined(__sun__) || defined(__sun)
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    15
 #include <sys/types.h>
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    16
 #include <sys/stat.h>
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    17
 #include <fcntl.h>
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    18
 #include <unistd.h>
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    19
 #include <dirent.h>
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    20
+#include <alloca.h>
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    21
 #else
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    22
 #include <sys/xattr.h>
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    23
 #endif
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    24
@@ -59,7 +60,7 @@ static void convert_bsd_list(char *namebuf, size_t size)
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    25
     while(offset < size) {
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    26
         int length = (int) namebuf[offset];
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    27
         memmove(namebuf+offset, namebuf+offset+1, length);
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    28
-        namebuf[offset+length] = '\0';
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    29
+        namebuf[offset+length] = '\\0';
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    30
         offset += length+1;
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    31
     }
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    32
 }
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    33
@@ -260,7 +261,7 @@ static ssize_t xattr_flistxattr(int fd, char *namebuf, size_t size, int options)
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    34
     return rv;
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    35
 }
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    36
 
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    37
-#elif defined(__SUN__) || defined(__sun__) || defined(sun)
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    38
+#elif defined(__SUN__) || defined(__sun__) || defined(__sun)
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    39
 
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    40
 /* Solaris 9 and later compatibility API */
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    41
 #define XATTR_XATTR_NOFOLLOW 0x0001
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    42
@@ -268,6 +269,9 @@ static ssize_t xattr_flistxattr(int fd, char *namebuf, size_t size, int options)
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    43
 #define XATTR_XATTR_REPLACE 0x0004
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    44
 #define XATTR_XATTR_NOSECURITY 0x0008
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    45
 
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    46
+#define XATTR_CREATE 0x1
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    47
+#define XATTR_REPLACE 0x2
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    48
+
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    49
 #ifndef u_int32_t
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    50
 #define u_int32_t uint32_t
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    51
 #endif
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    52
@@ -429,7 +433,7 @@ static ssize_t xattr_xflistxattr(int xfd, char *namebuf, size_t size, int option
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    53
             snprintf((char *)(namebuf + nsize), esize + 1,
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    54
                     entry->d_name);
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    55
         }
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    56
-        nsize += esize + 1; /* +1 for \0 */
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    57
+        nsize += esize + 1; /* +1 for \\0 */
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    58
     }
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    59
     closedir(dirp);
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    60
     return nsize;
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    61
@@ -438,7 +442,7 @@ static ssize_t xattr_flistxattr(int fd, char *namebuf, size_t size, int options)
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    62
 {
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    63
     int xfd;
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    64
 
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    65
-    xfd = openat(fd, ".", O_RDONLY);
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    66
+    xfd = openat(fd, ".", O_RDONLY | O_XATTR);
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    67
     return xattr_xflistxattr(xfd, namebuf, size, options);
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    68
 }
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    69
 
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    70
@@ -716,7 +720,7 @@ def _flistxattr(fd, options=0):
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    71
     flistxattr(fd, options=0) -> str
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    72
     """
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    73
     res = lib.xattr_flistxattr(fd, ffi.NULL, 0, options)
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    74
-    if res == 1:
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    75
+    if res == -1:
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    76
         raise error()
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    77
     buf = ffi.new("char[]", res)
f0074f08c8db PSARC/2014/113 xattr: filesystem extended attribute support for Python
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    78
     res = lib.xattr_flistxattr(fd, buf, res, options)