diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2020-04-09 14:24:11 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2020-04-10 16:40:48 +0200 |
commit | 0da965037e2ce817031bb98f3ee6c0f5fcc145f3 (patch) | |
tree | 151ffee019a70c2558a1dd533bb3aad8bb559a0a | |
parent | 7d6342e4012339bebecf5ed9bed774659a6f74d5 (diff) | |
download | systemd-0da965037e2ce817031bb98f3ee6c0f5fcc145f3.tar.gz |
Add yet another tiny helper to manipulate flags
-rw-r--r-- | src/basic/btrfs-util.c | 6 | ||||
-rw-r--r-- | src/basic/fd-util.c | 12 | ||||
-rw-r--r-- | src/basic/macro.h | 4 | ||||
-rw-r--r-- | src/shared/efi-loader.c | 5 |
4 files changed, 7 insertions, 20 deletions
diff --git a/src/basic/btrfs-util.c b/src/basic/btrfs-util.c index 18a7217757..b48e7371f6 100644 --- a/src/basic/btrfs-util.c +++ b/src/basic/btrfs-util.c @@ -175,11 +175,7 @@ int btrfs_subvol_set_read_only_fd(int fd, bool b) { if (ioctl(fd, BTRFS_IOC_SUBVOL_GETFLAGS, &flags) < 0) return -errno; - if (b) - nflags = flags | BTRFS_SUBVOL_RDONLY; - else - nflags = flags & ~BTRFS_SUBVOL_RDONLY; - + nflags = UPDATE_FLAG(flags, BTRFS_SUBVOL_RDONLY, b); if (flags == nflags) return 0; diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c index 4be876e24c..a3dced441a 100644 --- a/src/basic/fd-util.c +++ b/src/basic/fd-util.c @@ -144,11 +144,7 @@ int fd_nonblock(int fd, bool nonblock) { if (flags < 0) return -errno; - if (nonblock) - nflags = flags | O_NONBLOCK; - else - nflags = flags & ~O_NONBLOCK; - + nflags = UPDATE_FLAG(flags, O_NONBLOCK, nonblock); if (nflags == flags) return 0; @@ -167,11 +163,7 @@ int fd_cloexec(int fd, bool cloexec) { if (flags < 0) return -errno; - if (cloexec) - nflags = flags | FD_CLOEXEC; - else - nflags = flags & ~FD_CLOEXEC; - + nflags = UPDATE_FLAG(flags, FD_CLOEXEC, cloexec); if (nflags == flags) return 0; diff --git a/src/basic/macro.h b/src/basic/macro.h index 5aa7f59c0b..79530132e3 100644 --- a/src/basic/macro.h +++ b/src/basic/macro.h @@ -451,8 +451,10 @@ static inline int __coverity_check_and_return__(int condition) { ans; \ }) +#define UPDATE_FLAG(orig, flag, b) \ + ((b) ? ((orig) | (flag)) : ((orig) & ~(flag))) #define SET_FLAG(v, flag, b) \ - (v) = (b) ? ((v) | (flag)) : ((v) & ~(flag)) + (v) = UPDATE_FLAG(v, flag, b) #define FLAGS_SET(v, flags) \ ((~(v) & (flags)) == 0) diff --git a/src/shared/efi-loader.c b/src/shared/efi-loader.c index b05dc91ecf..34196537b7 100644 --- a/src/shared/efi-loader.c +++ b/src/shared/efi-loader.c @@ -135,10 +135,7 @@ int efi_set_reboot_to_firmware(bool value) { if (r < 0) return r; - if (value) - b_new = b | EFI_OS_INDICATIONS_BOOT_TO_FW_UI; - else - b_new = b & ~EFI_OS_INDICATIONS_BOOT_TO_FW_UI; + b_new = UPDATE_FLAG(b, EFI_OS_INDICATIONS_BOOT_TO_FW_UI, value); /* Avoid writing to efi vars store if we can due to firmware bugs. */ if (b != b_new) |