mirror of
https://github.com/Zygo/bees.git
synced 2025-05-17 21:35: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
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user