Ignore:
Timestamp:
Sep 13, 2023, 10:49:50 AM (21 months ago)
Author:
Izuru Yakumo
Message:

Ready to release 0.6.0

Signed-off-by: Izuru Yakumo <yakumo.izuru@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/vendor/golang.org/x/sys/unix/xattr_bsd.go

    r67 r69  
    161161
    162162func Listxattr(file string, dest []byte) (sz int, err error) {
    163         d := initxattrdest(dest, 0)
    164163        destsiz := len(dest)
    165164
    166165        // FreeBSD won't allow you to list xattrs from multiple namespaces
    167         s := 0
     166        s, pos := 0, 0
    168167        for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
    169                 stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)
     168                stmp, e := ListxattrNS(file, nsid, dest[pos:])
    170169
    171170                /* Errors accessing system attrs are ignored so that
     
    176175                 * we don't have read permissions on, so don't ignore those errors
    177176                 */
    178                 if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
    179                         continue
    180                 } else if e != nil {
     177                if e != nil {
     178                        if e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
     179                                continue
     180                        }
    181181                        return s, e
    182182                }
    183183
    184184                s += stmp
    185                 destsiz -= s
    186                 if destsiz < 0 {
    187                         destsiz = 0
    188                 }
    189                 d = initxattrdest(dest, s)
     185                pos = s
     186                if pos > destsiz {
     187                        pos = destsiz
     188                }
     189        }
     190
     191        return s, nil
     192}
     193
     194func ListxattrNS(file string, nsid int, dest []byte) (sz int, err error) {
     195        d := initxattrdest(dest, 0)
     196        destsiz := len(dest)
     197
     198        s, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)
     199        if e != nil {
     200                return 0, err
    190201        }
    191202
     
    194205
    195206func Flistxattr(fd int, dest []byte) (sz int, err error) {
    196         d := initxattrdest(dest, 0)
    197         destsiz := len(dest)
    198 
    199         s := 0
     207        destsiz := len(dest)
     208
     209        s, pos := 0, 0
    200210        for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
    201                 stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)
    202                 if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
    203                         continue
    204                 } else if e != nil {
     211                stmp, e := FlistxattrNS(fd, nsid, dest[pos:])
     212
     213                if e != nil {
     214                        if e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
     215                                continue
     216                        }
    205217                        return s, e
    206218                }
    207219
    208220                s += stmp
    209                 destsiz -= s
    210                 if destsiz < 0 {
    211                         destsiz = 0
    212                 }
    213                 d = initxattrdest(dest, s)
     221                pos = s
     222                if pos > destsiz {
     223                        pos = destsiz
     224                }
     225        }
     226
     227        return s, nil
     228}
     229
     230func FlistxattrNS(fd int, nsid int, dest []byte) (sz int, err error) {
     231        d := initxattrdest(dest, 0)
     232        destsiz := len(dest)
     233
     234        s, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)
     235        if e != nil {
     236                return 0, err
    214237        }
    215238
     
    218241
    219242func Llistxattr(link string, dest []byte) (sz int, err error) {
    220         d := initxattrdest(dest, 0)
    221         destsiz := len(dest)
    222 
    223         s := 0
     243        destsiz := len(dest)
     244
     245        s, pos := 0, 0
    224246        for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
    225                 stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)
    226                 if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
    227                         continue
    228                 } else if e != nil {
     247                stmp, e := LlistxattrNS(link, nsid, dest[pos:])
     248
     249                if e != nil {
     250                        if e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
     251                                continue
     252                        }
    229253                        return s, e
    230254                }
    231255
    232256                s += stmp
    233                 destsiz -= s
    234                 if destsiz < 0 {
    235                         destsiz = 0
    236                 }
    237                 d = initxattrdest(dest, s)
    238         }
    239 
    240         return s, nil
    241 }
     257                pos = s
     258                if pos > destsiz {
     259                        pos = destsiz
     260                }
     261        }
     262
     263        return s, nil
     264}
     265
     266func LlistxattrNS(link string, nsid int, dest []byte) (sz int, err error) {
     267        d := initxattrdest(dest, 0)
     268        destsiz := len(dest)
     269
     270        s, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)
     271        if e != nil {
     272                return 0, err
     273        }
     274
     275        return s, nil
     276}
Note: See TracChangeset for help on using the changeset viewer.