mirror of
https://github.com/Zygo/bees.git
synced 2025-05-18 05:45:45 +02:00
fd: FS_IOC_SETFLAGS takes an int* argument not a long*
According to ioctl_iflags(2): The type of the argument given to the FS_IOC_GETFLAGS and FS_IOC_SETFLAGS operations is int *, notwithstanding the implication in the kernel source file include/uapi/linux/fs.h that the argument is long *. So this code doesn't work on be64 machines. Also, Valgrind complains about it. Signed-off-by: Zygo Blaxell <bees@furryterror.org>
This commit is contained in:
parent
e82ce3c06e
commit
495218104a
@ -524,7 +524,14 @@ namespace crucible {
|
|||||||
void
|
void
|
||||||
ioctl_iflags_set(int fd, int attr)
|
ioctl_iflags_set(int fd, int attr)
|
||||||
{
|
{
|
||||||
DIE_IF_MINUS_ONE(ioctl(fd, FS_IOC_SETFLAGS, &attr));
|
// This bit of nonsense brought to you by Valgrind.
|
||||||
|
union {
|
||||||
|
int attr;
|
||||||
|
long zero;
|
||||||
|
} u;
|
||||||
|
u.zero = 0;
|
||||||
|
u.attr = attr;
|
||||||
|
DIE_IF_MINUS_ONE(ioctl(fd, FS_IOC_SETFLAGS, &u.attr));
|
||||||
}
|
}
|
||||||
|
|
||||||
string
|
string
|
||||||
|
Loading…
x
Reference in New Issue
Block a user