void VfsCatalog::vfsUpdateStat(ExtendedStat &xStat, Extensible xattrs) throw (DmException) {
if (xattrs.hasField(VFS_XATTR "acl"))
xStat.acl = Acl(xattrs.getString(VFS_XATTR "acl"));
+ else
+ xStat.acl = Acl();
xStat.stat.st_gid = xattrs.getUnsigned(VFS_XATTR "group", VFS_GID_NONE);
xStat.stat.st_uid = xattrs.getUnsigned(VFS_XATTR "owner", VFS_UID_NONE);
}
xStat.acl = Acl();
if (perms) {
- xattrs = vfsGetXattrs(path, lpath, true, VFS_XATTR_TYPE_PERMS);
- vfsUpdateStat(xStat, xattrs);
- } else {
- xStat.acl = Acl();
- xStat.stat.st_uid = VFS_UID_NONE;
- xStat.stat.st_gid = VFS_GID_NONE;
+ try {
+ xattrs = vfsGetXattrs(path, lpath, true, VFS_XATTR_TYPE_PERMS);
+ } catch (DmException& e) {
+ // ignore - default owner and no ACLs
+ }
}
+ vfsUpdateStat(xStat, xattrs);
+
return xStat;
}
// owner, permissions and other atributes like the original file anyway.
// ==> always follow the symlinks.
//
- xattrs = vfsGetXattrs(path, getLocalPath(path), true, VFS_XATTR_TYPE_ALL);
+ try {
+ xattrs = vfsGetXattrs(path, getLocalPath(path), true, VFS_XATTR_TYPE_ALL);
+ } catch (DmException& e) {
+ // ignore - default owner and no ACLs
+ }
// copy non-VFS attributes
for (it = xattrs.begin(); it != xattrs.end(); it++) {