New flag bit2 for iso_local_get_lfa_flags() and iso_local_set_lfa_flags()
This commit is contained in:
parent
c4769f333e
commit
622b5645f0
@ -526,6 +526,8 @@ ex:;
|
|||||||
@param flag Bitfield for control purposes.
|
@param flag Bitfield for control purposes.
|
||||||
bit0= consider ENOTTY from FS_IOC_GETFLAGS an error
|
bit0= consider ENOTTY from FS_IOC_GETFLAGS an error
|
||||||
(else return 4 on ENOTTY)
|
(else return 4 on ENOTTY)
|
||||||
|
bit2= do not issue own error messages with operating
|
||||||
|
system errors
|
||||||
@return 1= ok, all local attribute flags are in lfa_flags
|
@return 1= ok, all local attribute flags are in lfa_flags
|
||||||
2= ok, but some local flags could not be mapped to
|
2= ok, but some local flags could not be mapped to
|
||||||
the FS_*_FL bits
|
the FS_*_FL bits
|
||||||
@ -551,7 +553,8 @@ int aaip_get_lfa_flags(char *path, uint64_t *lfa_flags, int *max_bit,
|
|||||||
#ifdef FS_IOC_GETFLAGS
|
#ifdef FS_IOC_GETFLAGS
|
||||||
fd= open(path, O_RDONLY | O_NDELAY);
|
fd= open(path, O_RDONLY | O_NDELAY);
|
||||||
if(fd == -1) {
|
if(fd == -1) {
|
||||||
aaip_local_error("open(2)", path, errno, 0);
|
if(!(flag & 4))
|
||||||
|
aaip_local_error("open(2)", path, errno, 0);
|
||||||
*os_errno= errno;
|
*os_errno= errno;
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
@ -563,7 +566,8 @@ int aaip_get_lfa_flags(char *path, uint64_t *lfa_flags, int *max_bit,
|
|||||||
*max_bit= 23;
|
*max_bit= 23;
|
||||||
return(4);
|
return(4);
|
||||||
}
|
}
|
||||||
aaip_local_error("ioctl(FS_IOC_GETFLAGS)", path, errno, 0);
|
if(!(flag & 4))
|
||||||
|
aaip_local_error("ioctl(FS_IOC_GETFLAGS)", path, errno, 0);
|
||||||
*os_errno= errno;
|
*os_errno= errno;
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
@ -878,6 +882,11 @@ ex:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
@param flag Bitfield for control purposes.
|
||||||
|
bit2= do not issue own error messages with operating
|
||||||
|
system errors
|
||||||
|
*/
|
||||||
int aaip_set_lfa_flags(char *path, uint64_t lfa_flags, int max_bit,
|
int aaip_set_lfa_flags(char *path, uint64_t lfa_flags, int max_bit,
|
||||||
int *os_errno, int flag)
|
int *os_errno, int flag)
|
||||||
{
|
{
|
||||||
@ -900,7 +909,8 @@ int aaip_set_lfa_flags(char *path, uint64_t lfa_flags, int max_bit,
|
|||||||
|
|
||||||
fd= open(path, O_RDONLY | O_NDELAY);
|
fd= open(path, O_RDONLY | O_NDELAY);
|
||||||
if(fd == -1) {
|
if(fd == -1) {
|
||||||
aaip_local_error("open(2)", path, errno, 0);
|
if(!(flag & 4))
|
||||||
|
aaip_local_error("open(2)", path, errno, 0);
|
||||||
*os_errno= errno;
|
*os_errno= errno;
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
@ -911,7 +921,8 @@ int aaip_set_lfa_flags(char *path, uint64_t lfa_flags, int max_bit,
|
|||||||
ret= ioctl(fd, FS_IOC_SETFLAGS, &ioctl_arg);
|
ret= ioctl(fd, FS_IOC_SETFLAGS, &ioctl_arg);
|
||||||
close(fd);
|
close(fd);
|
||||||
if(ret == -1) {
|
if(ret == -1) {
|
||||||
aaip_local_error("ioctl(FS_IOC_SETFLAGS)", path, errno, 0);
|
if(!(flag & 4))
|
||||||
|
aaip_local_error("ioctl(FS_IOC_SETFLAGS)", path, errno, 0);
|
||||||
*os_errno= errno;
|
*os_errno= errno;
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
@ -948,7 +948,8 @@ int iso_local_get_perms_wo_acl(char *disk_path, mode_t *st_mode, int flag)
|
|||||||
/*
|
/*
|
||||||
* @param flag
|
* @param flag
|
||||||
* Bitfield for control purposes
|
* Bitfield for control purposes
|
||||||
* bit5= in case of symbolic link: inquire link target
|
* bit2= do not issue own error messages with operating system errors
|
||||||
|
* bit5= in case of symbolic link: inquire link target
|
||||||
* @return
|
* @return
|
||||||
* 1= ok, lfa_flags is valid
|
* 1= ok, lfa_flags is valid
|
||||||
* 2= ok, but some local flags could not be mapped to the FS_*_FL bits
|
* 2= ok, but some local flags could not be mapped to the FS_*_FL bits
|
||||||
@ -978,7 +979,8 @@ int iso_local_get_lfa_flags(char *disk_path, uint64_t *lfa_flags, int *max_bit,
|
|||||||
}
|
}
|
||||||
if ((stbuf.st_mode & S_IFMT) == S_IFLNK && !(flag & 32))
|
if ((stbuf.st_mode & S_IFMT) == S_IFLNK && !(flag & 32))
|
||||||
return 3;
|
return 3;
|
||||||
ret = aaip_get_lfa_flags(disk_path, lfa_flags, max_bit, os_errno, 0);
|
ret = aaip_get_lfa_flags(disk_path, lfa_flags, max_bit, os_errno,
|
||||||
|
flag & 4);
|
||||||
if(ret == 0)
|
if(ret == 0)
|
||||||
return ISO_LFA_NOT_ENABLED;
|
return ISO_LFA_NOT_ENABLED;
|
||||||
if(ret < 0)
|
if(ret < 0)
|
||||||
@ -991,6 +993,7 @@ int iso_local_get_lfa_flags(char *disk_path, uint64_t *lfa_flags, int *max_bit,
|
|||||||
* @param flag Bitfield for control purposes
|
* @param flag Bitfield for control purposes
|
||||||
* bit0= do not try to change known superuser flags
|
* bit0= do not try to change known superuser flags
|
||||||
* bit1= change only known chattr settable flags
|
* bit1= change only known chattr settable flags
|
||||||
|
* bit2= do not issue own error messages with operating system errors
|
||||||
* bit5= in case of symbolic link: inquire link target
|
* bit5= in case of symbolic link: inquire link target
|
||||||
* @return
|
* @return
|
||||||
* 1 = ok, all lfa_flags bits were written
|
* 1 = ok, all lfa_flags bits were written
|
||||||
@ -1023,7 +1026,7 @@ int iso_local_set_lfa_flags(char *disk_path, uint64_t lfa_flags, int max_bit,
|
|||||||
eff_flags = lfa_flags;
|
eff_flags = lfa_flags;
|
||||||
} else {
|
} else {
|
||||||
ret = aaip_get_lfa_flags(disk_path, &eff_flags, &old_max_bit, os_errno,
|
ret = aaip_get_lfa_flags(disk_path, &eff_flags, &old_max_bit, os_errno,
|
||||||
0);
|
flag & 4);
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
return ISO_LFA_NOT_ENABLED;
|
return ISO_LFA_NOT_ENABLED;
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@ -1031,7 +1034,7 @@ int iso_local_set_lfa_flags(char *disk_path, uint64_t lfa_flags, int max_bit,
|
|||||||
eff_flags &= ~change_mask;
|
eff_flags &= ~change_mask;
|
||||||
eff_flags |= (lfa_flags & change_mask);
|
eff_flags |= (lfa_flags & change_mask);
|
||||||
}
|
}
|
||||||
ret= aaip_set_lfa_flags(disk_path, eff_flags, max_bit, os_errno, 0);
|
ret= aaip_set_lfa_flags(disk_path, eff_flags, max_bit, os_errno, flag & 4);
|
||||||
if(ret == 0)
|
if(ret == 0)
|
||||||
return ISO_LFA_NOT_ENABLED;
|
return ISO_LFA_NOT_ENABLED;
|
||||||
if(ret < 0)
|
if(ret < 0)
|
||||||
|
@ -8057,7 +8057,8 @@ int iso_local_set_attrs(char *disk_path, size_t num_attrs, char **names,
|
|||||||
* Else it will be filled with 0.
|
* Else it will be filled with 0.
|
||||||
* @param flag
|
* @param flag
|
||||||
* Bitfield for control purposes
|
* Bitfield for control purposes
|
||||||
* bit5= in case of symbolic link: inquire link target
|
* bit2= do not issue own error messages with system call errors
|
||||||
|
* bit5= in case of symbolic link: inquire link target
|
||||||
* @return
|
* @return
|
||||||
* 1 = ok, lfa_flags is valid
|
* 1 = ok, lfa_flags is valid
|
||||||
* 2 = ok, but some local flags could not be mapped to the FS_*_FL bits
|
* 2 = ok, but some local flags could not be mapped to the FS_*_FL bits
|
||||||
@ -8101,6 +8102,7 @@ int iso_local_get_lfa_flags(char *disk_path, uint64_t *lfa_flags, int *max_bit,
|
|||||||
* Bitfield for control purposes
|
* Bitfield for control purposes
|
||||||
* bit0= do not try to change known chattr superuser flags: iaj
|
* bit0= do not try to change known chattr superuser flags: iaj
|
||||||
* bit1= change only known chattr settable flags: sucSiadAmjtDTCxPF
|
* bit1= change only known chattr settable flags: sucSiadAmjtDTCxPF
|
||||||
|
* bit2= do not issue own error messages with system call errors
|
||||||
* bit5= in case of symbolic link: operate on link target
|
* bit5= in case of symbolic link: operate on link target
|
||||||
* @return
|
* @return
|
||||||
* 1 = ok, all lfa_flags bits were written
|
* 1 = ok, all lfa_flags bits were written
|
||||||
|
Loading…
Reference in New Issue
Block a user