Add change_attr_fd()
Add change_attr_fd() function to modify the file/directory attribute.
This commit is contained in:
parent
0ea37920e7
commit
5b9fbd354e
|
@ -7843,6 +7843,28 @@ int chattr_path(const char *p, bool b, unsigned mask) {
|
|||
return chattr_fd(fd, b, mask);
|
||||
}
|
||||
|
||||
int change_attr_fd(int fd, unsigned value, unsigned mask) {
|
||||
unsigned old_attr, new_attr;
|
||||
|
||||
assert(fd >= 0);
|
||||
|
||||
if (mask == 0)
|
||||
return 0;
|
||||
|
||||
if (ioctl(fd, FS_IOC_GETFLAGS, &old_attr) < 0)
|
||||
return -errno;
|
||||
|
||||
new_attr = (old_attr & ~mask) |(value & mask);
|
||||
|
||||
if (new_attr == old_attr)
|
||||
return 0;
|
||||
|
||||
if (ioctl(fd, FS_IOC_SETFLAGS, &new_attr) < 0)
|
||||
return -errno;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int read_attr_fd(int fd, unsigned *ret) {
|
||||
assert(fd >= 0);
|
||||
|
||||
|
|
|
@ -1053,6 +1053,7 @@ int same_fd(int a, int b);
|
|||
|
||||
int chattr_fd(int fd, bool b, unsigned mask);
|
||||
int chattr_path(const char *p, bool b, unsigned mask);
|
||||
int change_attr_fd(int fd, unsigned value, unsigned mask);
|
||||
|
||||
int read_attr_fd(int fd, unsigned *ret);
|
||||
int read_attr_path(const char *p, unsigned *ret);
|
||||
|
|
Loading…
Reference in a new issue