summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-04-11 16:05:11 +0200
committerGitHub <noreply@github.com>2020-04-11 16:05:11 +0200
commitedc8dd26e27976e0cf06cbf5f97033b3128fc696 (patch)
treec07822011eba6b8b4bcaa8b67089e52971c17d30
parentb05e122036b35eb16ba33c487bb0440f3985aaa5 (diff)
parent0da965037e2ce817031bb98f3ee6c0f5fcc145f3 (diff)
downloadsystemd-edc8dd26e27976e0cf06cbf5f97033b3128fc696.tar.gz
Merge pull request #15392 from keszybz/flag-helper
Flag setting helper and some other minor cleanups
-rw-r--r--man/systemd.network.xml7
-rw-r--r--src/basic/btrfs-util.c6
-rw-r--r--src/basic/fd-util.c12
-rw-r--r--src/basic/macro.h4
-rw-r--r--src/busctl/busctl.c124
-rw-r--r--src/shared/efi-loader.c5
6 files changed, 89 insertions, 69 deletions
diff --git a/man/systemd.network.xml b/man/systemd.network.xml
index 8d11922c71..d7c3eeadef 100644
--- a/man/systemd.network.xml
+++ b/man/systemd.network.xml
@@ -1930,10 +1930,9 @@
<varlistentry>
<term><varname>POP3Servers=</varname></term>
- <listitem><para>Similar to the <varname>DNS=</varname> settings described above, these
- settings configure whether and what POP3 server information shall be emitted as part of
- the DHCP lease. The same syntax, propagation semantics and defaults apply as for
- <term><varname>SMTPServers=</varname></term>
+ <listitem><para>Similar to the <varname>DNS=</varname> setting described above, this setting
+ configures whether and what POP3 server information shall be emitted as part of the DHCP lease. The
+ same syntax, propagation semantics and defaults apply as for
<varname>DNS=</varname>.</para></listitem>
</varlistentry>
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/busctl/busctl.c b/src/busctl/busctl.c
index 3d03eb37a6..4fb5a8cedc 100644
--- a/src/busctl/busctl.c
+++ b/src/busctl/busctl.c
@@ -101,7 +101,8 @@ static int acquire_bus(bool set_monitor, sd_bus **ret) {
r = sd_bus_set_watch_bind(bus, arg_watch_bind);
if (r < 0)
- return log_error_errno(r, "Failed to set watch-bind setting to '%s': %m", yes_no(arg_watch_bind));
+ return log_error_errno(r, "Failed to set watch-bind setting to '%s': %m",
+ yes_no(arg_watch_bind));
if (arg_address)
r = sd_bus_set_address(bus, arg_address);
@@ -172,7 +173,9 @@ static int list_bus_names(int argc, char **argv, void *userdata) {
if (r < 0)
return r;
- r = sd_bus_list_names(bus, (arg_acquired || arg_unique) ? &acquired : NULL, arg_activatable ? &activatable : NULL);
+ r = sd_bus_list_names(bus,
+ (arg_acquired || arg_unique) ? &acquired : NULL,
+ arg_activatable ? &activatable : NULL);
if (r < 0)
return log_error_errno(r, "Failed to list names: %m");
@@ -192,7 +195,16 @@ static int list_bus_names(int argc, char **argv, void *userdata) {
return log_error_errno(r, "Failed to add to hashmap: %m");
}
- table = table_new("activatable", "name", "pid", "process", "user", "connection", "unit", "session", "description", "machine");
+ table = table_new("activatable",
+ "name",
+ "pid",
+ "process",
+ "user",
+ "connection",
+ "unit",
+ "session",
+ "description",
+ "machine");
if (!table)
return log_oom();
@@ -354,11 +366,11 @@ static int list_bus_names(int argc, char **argv, void *userdata) {
return log_error_errno(r, "Failed to fill line: %m");
}
- if (IN_SET(arg_json, JSON_OFF, JSON_PRETTY))
- (void) pager_open(arg_pager_flags);
+ (void) pager_open(arg_pager_flags);
if (arg_json)
- r = table_print_json(table, stdout, (arg_json == JSON_PRETTY ? JSON_FORMAT_PRETTY : JSON_FORMAT_NEWLINE) | JSON_FORMAT_COLOR_AUTO);
+ r = table_print_json(table, stdout,
+ (arg_json == JSON_PRETTY ? JSON_FORMAT_PRETTY : JSON_FORMAT_NEWLINE) | JSON_FORMAT_COLOR_AUTO);
else
r = table_print(table, stdout);
if (r < 0)
@@ -405,7 +417,10 @@ static void print_subtree(const char *prefix, const char *path, char **l) {
n++;
}
- printf("%s%s%s\n", prefix, special_glyph(has_more ? SPECIAL_GLYPH_TREE_BRANCH : SPECIAL_GLYPH_TREE_RIGHT), *l);
+ printf("%s%s%s\n",
+ prefix,
+ special_glyph(has_more ? SPECIAL_GLYPH_TREE_BRANCH : SPECIAL_GLYPH_TREE_RIGHT),
+ *l);
print_subtree(has_more ? vertical : space, *l, l);
l = n;
@@ -460,12 +475,16 @@ static int find_nodes(sd_bus *bus, const char *service, const char *path, Set *p
const char *xml;
int r;
- r = sd_bus_call_method(bus, service, path, "org.freedesktop.DBus.Introspectable", "Introspect", &error, &reply, "");
+ r = sd_bus_call_method(bus, service, path,
+ "org.freedesktop.DBus.Introspectable", "Introspect",
+ &error, &reply, "");
if (r < 0) {
if (many)
- printf("Failed to introspect object %s of service %s: %s\n", path, service, bus_error_message(&error, r));
+ printf("Failed to introspect object %s of service %s: %s\n",
+ path, service, bus_error_message(&error, r));
else
- log_error_errno(r, "Failed to introspect object %s of service %s: %s", path, service, bus_error_message(&error, r));
+ log_error_errno(r, "Failed to introspect object %s of service %s: %s",
+ path, service, bus_error_message(&error, r));
return r;
}
@@ -994,9 +1013,12 @@ static int introspect(int argc, char **argv, void *userdata) {
if (!members)
return log_oom();
- r = sd_bus_call_method(bus, argv[1], argv[2], "org.freedesktop.DBus.Introspectable", "Introspect", &error, &reply_xml, "");
+ r = sd_bus_call_method(bus, argv[1], argv[2],
+ "org.freedesktop.DBus.Introspectable", "Introspect",
+ &error, &reply_xml, "");
if (r < 0)
- return log_error_errno(r, "Failed to introspect object %s of service %s: %s", argv[2], argv[1], bus_error_message(&error, r));
+ return log_error_errno(r, "Failed to introspect object %s of service %s: %s",
+ argv[2], argv[1], bus_error_message(&error, r));
r = sd_bus_message_read(reply_xml, "s", &xml);
if (r < 0)
@@ -1004,6 +1026,7 @@ static int introspect(int argc, char **argv, void *userdata) {
if (arg_xml_interface) {
/* Just dump the received XML and finish */
+ (void) pager_open(arg_pager_flags);
puts(xml);
return 0;
}
@@ -1026,7 +1049,9 @@ static int introspect(int argc, char **argv, void *userdata) {
if (argv[3] && !streq(argv[3], m->interface))
continue;
- r = sd_bus_call_method(bus, argv[1], argv[2], "org.freedesktop.DBus.Properties", "GetAll", &error, &reply, "s", m->interface);
+ r = sd_bus_call_method(bus, argv[1], argv[2],
+ "org.freedesktop.DBus.Properties", "GetAll",
+ &error, &reply, "s", m->interface);
if (r < 0)
return log_error_errno(r, "Failed to get all properties on interface %s: %s",
m->interface, bus_error_message(&error, r));
@@ -1088,17 +1113,14 @@ static int introspect(int argc, char **argv, void *userdata) {
return bus_log_parse_error(r);
}
- (void) pager_open(arg_pager_flags);
-
- name_width = STRLEN("NAME");
- type_width = STRLEN("TYPE");
- signature_width = STRLEN("SIGNATURE");
- result_width = STRLEN("RESULT/VALUE");
+ name_width = strlen("NAME");
+ type_width = strlen("TYPE");
+ signature_width = strlen("SIGNATURE");
+ result_width = strlen("RESULT/VALUE");
sorted = newa(Member*, set_size(members));
SET_FOREACH(m, members, i) {
-
if (argv[3] && !streq(argv[3], m->interface))
continue;
@@ -1123,6 +1145,8 @@ static int introspect(int argc, char **argv, void *userdata) {
typesafe_qsort(sorted, k, member_compare_funcp);
+ (void) pager_open(arg_pager_flags);
+
if (arg_legend) {
printf("%-*s %-*s %-*s %-*s %s\n",
(int) name_width, "NAME",
@@ -1159,7 +1183,8 @@ static int introspect(int argc, char **argv, void *userdata) {
printf("%s%s%-*s%s %-*s %-*s %-*s%s%s%s%s%s%s\n",
is_interface ? ansi_highlight() : "",
is_interface ? "" : ".",
- - !is_interface + (int) name_width, empty_to_dash(streq_ptr(m->type, "interface") ? m->interface : m->name),
+ - !is_interface + (int) name_width,
+ empty_to_dash(streq_ptr(m->type, "interface") ? m->interface : m->name),
is_interface ? ansi_normal() : "",
(int) type_width, empty_to_dash(m->type),
(int) signature_width, empty_to_dash(m->signature),
@@ -1196,22 +1221,22 @@ static int message_json(sd_bus_message *m, FILE *f) {
e[1] = 0;
r = json_build(&w, JSON_BUILD_OBJECT(
- JSON_BUILD_PAIR("type", JSON_BUILD_STRING(bus_message_type_to_string(m->header->type))),
- JSON_BUILD_PAIR("endian", JSON_BUILD_STRING(e)),
- JSON_BUILD_PAIR("flags", JSON_BUILD_INTEGER(m->header->flags)),
- JSON_BUILD_PAIR("version", JSON_BUILD_INTEGER(m->header->version)),
- JSON_BUILD_PAIR("cookie", JSON_BUILD_INTEGER(BUS_MESSAGE_COOKIE(m))),
- JSON_BUILD_PAIR_CONDITION(m->reply_cookie != 0, "reply_cookie", JSON_BUILD_INTEGER(m->reply_cookie)),
- JSON_BUILD_PAIR_CONDITION(m->sender, "sender", JSON_BUILD_STRING(m->sender)),
- JSON_BUILD_PAIR_CONDITION(m->destination, "destination", JSON_BUILD_STRING(m->destination)),
- JSON_BUILD_PAIR_CONDITION(m->path, "path", JSON_BUILD_STRING(m->path)),
- JSON_BUILD_PAIR_CONDITION(m->interface, "interface", JSON_BUILD_STRING(m->interface)),
- JSON_BUILD_PAIR_CONDITION(m->member, "member", JSON_BUILD_STRING(m->member)),
- JSON_BUILD_PAIR_CONDITION(m->monotonic != 0, "monotonic", JSON_BUILD_INTEGER(m->monotonic)),
- JSON_BUILD_PAIR_CONDITION(m->realtime != 0, "realtime", JSON_BUILD_INTEGER(m->realtime)),
- JSON_BUILD_PAIR_CONDITION(m->seqnum != 0, "seqnum", JSON_BUILD_INTEGER(m->seqnum)),
- JSON_BUILD_PAIR_CONDITION(m->error.name, "error_name", JSON_BUILD_STRING(m->error.name)),
- JSON_BUILD_PAIR("payload", JSON_BUILD_VARIANT(v))));
+ JSON_BUILD_PAIR("type", JSON_BUILD_STRING(bus_message_type_to_string(m->header->type))),
+ JSON_BUILD_PAIR("endian", JSON_BUILD_STRING(e)),
+ JSON_BUILD_PAIR("flags", JSON_BUILD_INTEGER(m->header->flags)),
+ JSON_BUILD_PAIR("version", JSON_BUILD_INTEGER(m->header->version)),
+ JSON_BUILD_PAIR("cookie", JSON_BUILD_INTEGER(BUS_MESSAGE_COOKIE(m))),
+ JSON_BUILD_PAIR_CONDITION(m->reply_cookie != 0, "reply_cookie", JSON_BUILD_INTEGER(m->reply_cookie)),
+ JSON_BUILD_PAIR_CONDITION(m->sender, "sender", JSON_BUILD_STRING(m->sender)),
+ JSON_BUILD_PAIR_CONDITION(m->destination, "destination", JSON_BUILD_STRING(m->destination)),
+ JSON_BUILD_PAIR_CONDITION(m->path, "path", JSON_BUILD_STRING(m->path)),
+ JSON_BUILD_PAIR_CONDITION(m->interface, "interface", JSON_BUILD_STRING(m->interface)),
+ JSON_BUILD_PAIR_CONDITION(m->member, "member", JSON_BUILD_STRING(m->member)),
+ JSON_BUILD_PAIR_CONDITION(m->monotonic != 0, "monotonic", JSON_BUILD_INTEGER(m->monotonic)),
+ JSON_BUILD_PAIR_CONDITION(m->realtime != 0, "realtime", JSON_BUILD_INTEGER(m->realtime)),
+ JSON_BUILD_PAIR_CONDITION(m->seqnum != 0, "seqnum", JSON_BUILD_INTEGER(m->seqnum)),
+ JSON_BUILD_PAIR_CONDITION(m->error.name, "error_name", JSON_BUILD_STRING(m->error.name)),
+ JSON_BUILD_PAIR("payload", JSON_BUILD_VARIANT(v))));
if (r < 0)
return log_error_errno(r, "Failed to build JSON object: %m");
@@ -1375,6 +1400,8 @@ static int status(int argc, char **argv, void *userdata) {
if (r < 0)
return r;
+ (void) pager_open(arg_pager_flags);
+
if (!isempty(argv[1])) {
r = parse_pid(argv[1], &pid);
if (r < 0)
@@ -1402,7 +1429,8 @@ static int status(int argc, char **argv, void *userdata) {
r = sd_bus_get_bus_id(bus, &bus_id);
if (r >= 0)
- printf("BusID=%s" SD_ID128_FORMAT_STR "%s\n", ansi_highlight(), SD_ID128_FORMAT_VAL(bus_id), ansi_normal());
+ printf("BusID=%s" SD_ID128_FORMAT_STR "%s\n",
+ ansi_highlight(), SD_ID128_FORMAT_VAL(bus_id), ansi_normal());
r = sd_bus_get_owner_creds(
bus,
@@ -1562,7 +1590,6 @@ static int message_append_cmdline(sd_bus_message *m, const char *signature, char
return log_error_errno(r, "Invalid array signature: %m");
{
- unsigned i;
char s[k + 1];
memcpy(s, signature, k);
s[k] = 0;
@@ -1571,7 +1598,7 @@ static int message_append_cmdline(sd_bus_message *m, const char *signature, char
if (r < 0)
return bus_log_create_error(r);
- for (i = 0; i < n; i++) {
+ for (unsigned i = 0; i < n; i++) {
r = message_append_cmdline(m, s, &p);
if (r < 0)
return r;
@@ -1612,7 +1639,9 @@ static int message_append_cmdline(sd_bus_message *m, const char *signature, char
memcpy(s, signature + 1, k - 2);
s[k - 2] = 0;
- r = sd_bus_message_open_container(m, t == SD_BUS_TYPE_STRUCT_BEGIN ? SD_BUS_TYPE_STRUCT : SD_BUS_TYPE_DICT_ENTRY, s);
+ const char ctype = t == SD_BUS_TYPE_STRUCT_BEGIN ?
+ SD_BUS_TYPE_STRUCT : SD_BUS_TYPE_DICT_ENTRY;
+ r = sd_bus_message_open_container(m, ctype, s);
if (r < 0)
return bus_log_create_error(r);
@@ -2033,7 +2062,8 @@ static int call(int argc, char **argv, void *userdata) {
return r;
if (*p)
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Too many parameters for signature.");
+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+ "Too many parameters for signature.");
}
if (!arg_expect_reply) {
@@ -2121,7 +2151,8 @@ static int emit_signal(int argc, char **argv, void *userdata) {
return r;
if (*p)
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Too many parameters for signature.");
+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+ "Too many parameters for signature.");
}
r = sd_bus_send(bus, m, NULL);
@@ -2146,7 +2177,9 @@ static int get_property(int argc, char **argv, void *userdata) {
const char *contents = NULL;
char type;
- r = sd_bus_call_method(bus, argv[1], argv[2], "org.freedesktop.DBus.Properties", "Get", &error, &reply, "ss", argv[3], *i);
+ r = sd_bus_call_method(bus, argv[1], argv[2],
+ "org.freedesktop.DBus.Properties", "Get",
+ &error, &reply, "ss", argv[3], *i);
if (r < 0)
return log_error_errno(r, "Failed to get property %s on interface %s: %s",
*i, argv[3],
@@ -2208,7 +2241,8 @@ static int set_property(int argc, char **argv, void *userdata) {
if (r < 0)
return r;
- r = sd_bus_message_new_method_call(bus, &m, argv[1], argv[2], "org.freedesktop.DBus.Properties", "Set");
+ r = sd_bus_message_new_method_call(bus, &m, argv[1], argv[2],
+ "org.freedesktop.DBus.Properties", "Set");
if (r < 0)
return bus_log_create_error(r);
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)