Merge pull request #23821 from dtardon/ascii-logging

Allow ASCII fallback for Unicode characters in logs
This commit is contained in:
Yu Watanabe
2022-06-29 03:36:35 +09:00
committed by GitHub
40 changed files with 193 additions and 106 deletions
+4 -2
View File
@@ -8,6 +8,7 @@
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
#include "glyph-util.h"
#include "macro.h"
#include "os-util.h"
#include "parse-util.h"
@@ -146,8 +147,9 @@ int open_extension_release(const char *root, const char *extension, char **ret_p
if (k != 0)
continue;
log_debug("%s/%s: 'user.extension-release.strict' attribute is false…",
extension_release_dir_path, de->d_name);
log_debug("%s/%s: 'user.extension-release.strict' attribute is false%s",
extension_release_dir_path, de->d_name,
special_glyph(SPECIAL_GLYPH_ELLIPSIS));
/* We already found what we were looking for, but there's another candidate?
* We treat this as an error, as we want to enforce that there are no ambiguities
+7 -6
View File
@@ -348,13 +348,13 @@ int unit_file_resolve_symlink(
if (r < 0)
return r;
if (is_path(tail))
log_warning("Suspicious symlink %s/%s→%s, treating as alias.",
dir, filename, simplified);
log_warning("Suspicious symlink %s/%s %s %s, treating as alias.",
dir, filename, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), simplified);
dst = resolve_destination_target ? TAKE_PTR(simplified) : TAKE_PTR(target_name);
} else {
log_debug("Linked unit file: %s/%s → %s", dir, filename, simplified);
log_debug("Linked unit file: %s/%s %s %s", dir, filename, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), simplified);
if (resolve_destination_target)
dst = TAKE_PTR(simplified);
@@ -569,8 +569,8 @@ int unit_file_build_name_map(
r = hashmap_ensure_put(&ids, &string_hash_ops_free_free, key, dst);
if (r < 0)
return log_warning_errno(r, "Failed to add entry to hashmap (%s→%s): %m",
de->d_name, dst);
return log_warning_errno(r, "Failed to add entry to hashmap (%s%s%s): %m",
de->d_name, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), dst);
key = dst = NULL;
}
}
@@ -612,7 +612,8 @@ int unit_file_build_name_map(
r = string_strv_hashmap_put(&names, dst, src);
if (r < 0)
return log_warning_errno(r, "Failed to add entry to hashmap (%s→%s): %m", dst, src);
return log_warning_errno(r, "Failed to add entry to hashmap (%s%s%s): %m",
dst, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), src);
}
if (cache_timestamp_hash)
+1 -1
View File
@@ -83,7 +83,7 @@ static int apply_file(const char *filename, bool ignore_enoent) {
return log_error_errno(r, "Failed to open file '%s': %m", filename);
}
log_debug("Applying %s…", pp);
log_debug("Applying %s%s", pp, special_glyph(SPECIAL_GLYPH_ELLIPSIS));
for (unsigned line = 1;; line++) {
_cleanup_free_ char *text = NULL;
char *p;
+1 -1
View File
@@ -1562,7 +1562,7 @@ static int are_we_installed(const char *esp_path) {
if (!p)
return log_oom();
log_debug("Checking whether %s contains any files…", p);
log_debug("Checking whether %s contains any files%s", p, special_glyph(SPECIAL_GLYPH_ELLIPSIS));
r = dir_is_empty(p, /* ignore_hidden_or_backup= */ false);
if (r < 0 && r != -ENOENT)
return log_error_errno(r, "Failed to check whether %s contains any files: %m", p);
+1 -1
View File
@@ -1959,7 +1959,7 @@ static int method_enqueue_marked_jobs(sd_bus_message *message, void *userdata, s
if (r == 0)
return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
log_info("Queuing reload/restart jobs for marked units…");
log_info("Queuing reload/restart jobs for marked units%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
r = sd_bus_message_new_method_return(message, &reply);
+2 -1
View File
@@ -484,7 +484,8 @@ static int bus_service_set_transient_property(
return log_oom();
if (!UNIT_WRITE_FLAGS_NOOP(flags))
log_unit_notice(u, "Transient unit's PIDFile= property references path below legacy directory /var/run, updating %s → %s; please update client accordingly.", n, z);
log_unit_notice(u, "Transient unit's PIDFile= property references path below legacy directory /var/run, updating %s %s %s; please update client accordingly.",
n, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), z);
free_and_replace(n, z);
}
+4 -2
View File
@@ -309,9 +309,11 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
r = fd_get_path(fd, &fn);
if (r < 0)
log_debug_errno(r, "Received serialized fd %i → %m", fd);
log_debug_errno(r, "Received serialized fd %i %s %m",
fd, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT));
else
log_debug("Received serialized fd %i → %s", fd, strna(fn));
log_debug("Received serialized fd %i %s %s",
fd, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), strna(fn));
}
}
}
+2 -2
View File
@@ -1616,7 +1616,7 @@ static void manager_coldplug(Manager *m) {
assert(m);
log_debug("Invoking unit coldplug() handlers…");
log_debug("Invoking unit coldplug() handlers%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
/* Let's place the units back into their deserialized state */
HASHMAP_FOREACH_KEY(u, k, m->units) {
@@ -1637,7 +1637,7 @@ static void manager_catchup(Manager *m) {
assert(m);
log_debug("Invoking unit catchup() handlers…");
log_debug("Invoking unit catchup() handlers%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
/* Let's catch up on any state changes that happened while we were reloading/reexecing */
HASHMAP_FOREACH_KEY(u, k, m->units) {
+5 -2
View File
@@ -19,6 +19,7 @@
#include "extension-release.h"
#include "fd-util.h"
#include "format-util.h"
#include "glyph-util.h"
#include "label.h"
#include "list.h"
#include "loop-util.h"
@@ -1279,7 +1280,8 @@ static int follow_symlink(
"Symlink loop on '%s'.",
mount_entry_path(m));
log_debug("Followed mount entry path symlink %s → %s.", mount_entry_path(m), target);
log_debug("Followed mount entry path symlink %s %s %s.",
mount_entry_path(m), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), target);
mount_entry_consume_prefix(m, TAKE_PTR(target));
@@ -1418,7 +1420,8 @@ static int apply_one_mount(
if (r < 0)
return log_debug_errno(r, "Failed to follow symlinks on %s: %m", mount_entry_source(m));
log_debug("Followed source symlinks %s → %s.", mount_entry_source(m), chased);
log_debug("Followed source symlinks %s %s %s.",
mount_entry_source(m), special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), chased);
free_and_replace(m->source_malloc, chased);
+2 -1
View File
@@ -1282,7 +1282,8 @@ static int socket_symlink(Socket *s) {
}
if (r < 0)
log_unit_warning_errno(UNIT(s), r, "Failed to create symlink %s → %s, ignoring: %m", p, *i);
log_unit_warning_errno(UNIT(s), r, "Failed to create symlink %s %s %s, ignoring: %m",
p, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), *i);
}
return 0;
@@ -6,6 +6,7 @@
#include "def.h"
#include "env-file.h"
#include "escape.h"
#include "glyph-util.h"
#include "log.h"
#include "path-lookup.h"
#include "strv.h"
@@ -55,7 +56,7 @@ static int load_and_print(void) {
* that in case of failure, a partial update is better than none. */
STRV_FOREACH(i, files) {
log_debug("Reading %s…", *i);
log_debug("Reading %s%s", *i, special_glyph(SPECIAL_GLYPH_ELLIPSIS));
r = merge_env_file(&env, NULL, *i);
if (r == -ENOMEM)
+8 -4
View File
@@ -1688,9 +1688,13 @@ static int passwd_home(int argc, char *argv[], void *userdata) {
int r;
if (arg_pkcs11_token_uri)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "To change the PKCS#11 security token use 'homectl update --pkcs11-token-uri=…'.");
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"To change the PKCS#11 security token use 'homectl update --pkcs11-token-uri=%s'.",
special_glyph(SPECIAL_GLYPH_ELLIPSIS));
if (arg_fido2_device)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "To change the FIDO2 security token use 'homectl update --fido2-device=…'.");
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"To change the FIDO2 security token use 'homectl update --fido2-device=%s'.",
special_glyph(SPECIAL_GLYPH_ELLIPSIS));
if (identity_properties_specified())
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "The 'passwd' verb does not permit changing other record properties at the same time.");
@@ -3613,8 +3617,8 @@ static int parse_argv(int argc, char *argv[]) {
return log_error_errno(r, "Failed to parse --rebalance-weight= argument: %s", optarg);
if (u < REBALANCE_WEIGHT_MIN || u > REBALANCE_WEIGHT_MAX)
return log_error_errno(SYNTHETIC_ERRNO(ERANGE), "Rebalancing weight out of valid range %" PRIu64 "…%" PRIu64 ": %s",
REBALANCE_WEIGHT_MIN, REBALANCE_WEIGHT_MAX, optarg);
return log_error_errno(SYNTHETIC_ERRNO(ERANGE), "Rebalancing weight out of valid range %" PRIu64 "%s%" PRIu64 ": %s",
REBALANCE_WEIGHT_MIN, special_glyph(SPECIAL_GLYPH_ELLIPSIS), REBALANCE_WEIGHT_MAX, optarg);
}
/* Drop from per machine stuff and everywhere */
+3 -1
View File
@@ -19,6 +19,7 @@
#include "fileio.h"
#include "filesystems.h"
#include "fs-util.h"
#include "glyph-util.h"
#include "home-util.h"
#include "homed-home-bus.h"
#include "homed-home.h"
@@ -479,8 +480,9 @@ static void home_set_state(Home *h, HomeState state) {
new_state = home_get_state(h); /* Query the new state, since the 'state' variable might be set to -1,
* in which case we synthesize an high-level state on demand */
log_info("%s: changing state %s → %s", h->user_name,
log_info("%s: changing state %s %s %s", h->user_name,
home_state_to_string(old_state),
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
home_state_to_string(new_state));
home_update_pin_fd(h, new_state);
+5 -2
View File
@@ -23,6 +23,7 @@
#include "fileio.h"
#include "format-util.h"
#include "fs-util.h"
#include "glyph-util.h"
#include "gpt.h"
#include "home-util.h"
#include "homed-conf.h"
@@ -1936,8 +1937,10 @@ static int manager_rebalance_calculate(Manager *m) {
(m->rebalance_state == REBALANCE_GROWING && h->rebalance_goal < h->rebalance_size))
h->rebalance_pending = false;
else {
log_debug("Rebalancing home directory '%s' %s → %s.", h->user_name,
FORMAT_BYTES(h->rebalance_size), FORMAT_BYTES(h->rebalance_goal));
log_debug("Rebalancing home directory '%s' %s %s %s.", h->user_name,
FORMAT_BYTES(h->rebalance_size),
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
FORMAT_BYTES(h->rebalance_goal));
h->rebalance_pending = true;
}
+5 -1
View File
@@ -29,6 +29,7 @@
#include "filesystems.h"
#include "fs-util.h"
#include "fsck-util.h"
#include "glyph-util.h"
#include "gpt.h"
#include "home-util.h"
#include "homework-luks.h"
@@ -3304,12 +3305,15 @@ int home_resize_luks(
if (resize_type == CAN_RESIZE_OFFLINE && FLAGS_SET(flags, HOME_SETUP_ALREADY_ACTIVATED))
return log_error_errno(SYNTHETIC_ERRNO(ETXTBSY), "File systems of this type can only be resized offline, but is currently online.");
log_info("Ready to resize image size %s → %s, partition size %s → %s, file system size %s → %s.",
log_info("Ready to resize image size %s %s %s, partition size %s %s %s, file system size %s %s %s.",
FORMAT_BYTES(old_image_size),
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
FORMAT_BYTES(new_image_size),
FORMAT_BYTES(setup->partition_size),
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
FORMAT_BYTES(new_partition_size),
FORMAT_BYTES(old_fs_size),
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
FORMAT_BYTES(new_fs_size));
r = prepare_resize_partition(
+3 -1
View File
@@ -7,6 +7,7 @@
#include "alloc-util.h"
#include "fd-util.h"
#include "format-util.h"
#include "glyph-util.h"
#include "home-util.h"
#include "homework-mount.h"
#include "homework.h"
@@ -296,7 +297,8 @@ int home_shift_uid(int dir_fd, const char *target, uid_t stored_uid, uid_t expos
if (r < 0)
return log_error_errno(errno, "Failed to apply UID/GID map: %m");
log_debug("Applied uidmap mount to %s. Mapping is " UID_FMT " → " UID_FMT ".", strna(target), stored_uid, exposed_uid);
log_debug("Applied uidmap mount to %s. Mapping is " UID_FMT " %s " UID_FMT ".",
strna(target), stored_uid, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), exposed_uid);
if (ret_mount_fd)
*ret_mount_fd = TAKE_FD(mount_fd);
+3 -1
View File
@@ -30,6 +30,7 @@
#include "def.h"
#include "errno-util.h"
#include "fd-util.h"
#include "glyph-util.h"
#include "hexdecoct.h"
#include "hostname-util.h"
#include "io-util.h"
@@ -521,7 +522,8 @@ void bus_set_state(sd_bus *bus, enum bus_state state) {
if (state == bus->state)
return;
log_debug("Bus %s: changing state %s → %s", strna(bus->description), table[bus->state], table[state]);
log_debug("Bus %s: changing state %s %s %s", strna(bus->description),
table[bus->state], special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), table[state]);
bus->state = state;
}
+3 -1
View File
@@ -13,6 +13,7 @@
#include "event-source.h"
#include "fd-util.h"
#include "fs-util.h"
#include "glyph-util.h"
#include "hashmap.h"
#include "list.h"
#include "macro.h"
@@ -405,7 +406,8 @@ _public_ int sd_event_new(sd_event** ret) {
e->epoll_fd = fd_move_above_stdio(e->epoll_fd);
if (secure_getenv("SD_EVENT_PROFILE_DELAYS")) {
log_debug("Event loop profiling enabled. Logarithmic histogram of event loop iterations in the range 2^0 … 2^63 us will be logged every 5s.");
log_debug("Event loop profiling enabled. Logarithmic histogram of event loop iterations in the range 2^0 %s 2^63 us will be logged every 5s.",
special_glyph(SPECIAL_GLYPH_ELLIPSIS));
e->profile_delays = true;
}
+10 -5
View File
@@ -26,6 +26,7 @@
#include "fileio.h"
#include "format-util.h"
#include "fs-util.h"
#include "glyph-util.h"
#include "ipvlan.h"
#include "missing_network.h"
#include "netlink-util.h"
@@ -2036,7 +2037,8 @@ static int link_update_master(Link *link, sd_netlink_message *message) {
else if (master_ifindex == 0)
log_link_debug(link, "Detached from master interface: %i", link->master_ifindex);
else
log_link_debug(link, "Master interface changed: %i → %i", link->master_ifindex, master_ifindex);
log_link_debug(link, "Master interface changed: %i %s %i", link->master_ifindex,
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), master_ifindex);
link_drop_from_master(link);
@@ -2151,8 +2153,10 @@ static int link_update_hardware_address(Link *link, sd_netlink_message *message)
if (link->hw_addr.length == 0)
log_link_debug(link, "Saved hardware address: %s", HW_ADDR_TO_STR(&addr));
else {
log_link_debug(link, "Hardware address is changed: %s → %s",
HW_ADDR_TO_STR(&link->hw_addr), HW_ADDR_TO_STR(&addr));
log_link_debug(link, "Hardware address is changed: %s %s %s",
HW_ADDR_TO_STR(&link->hw_addr),
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
HW_ADDR_TO_STR(&addr));
hashmap_remove_value(link->manager->links_by_hw_addr, &link->hw_addr, link);
}
@@ -2248,8 +2252,9 @@ static int link_update_mtu(Link *link, sd_netlink_message *message) {
return 0;
if (link->mtu != 0)
log_link_debug(link, "MTU is changed: %"PRIu32" → %"PRIu32" (min: %"PRIu32", max: %"PRIu32")",
link->mtu, mtu, link->min_mtu, link->max_mtu);
log_link_debug(link, "MTU is changed: %"PRIu32" %s %"PRIu32" (min: %"PRIu32", max: %"PRIu32")",
link->mtu, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), mtu,
link->min_mtu, link->max_mtu);
link->mtu = mtu;
+4 -1
View File
@@ -10,6 +10,7 @@
#include "env-util.h"
#include "errno-util.h"
#include "glyph-util.h"
#include "in-addr-util.h"
#include "macro.h"
#include "nss-util.h"
@@ -180,7 +181,9 @@ static int json_dispatch_address(const char *name, JsonVariant *variant, JsonDis
b = json_variant_integer(i);
if (b < 0 || b > 0xff)
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "Element %zu of JSON field '%s' is out of range 0…255.", k, strna(name));
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL),
"Element %zu of JSON field '%s' is out of range 0%s255.",
k, strna(name), special_glyph(SPECIAL_GLYPH_ELLIPSIS));
buf.bytes[k++] = (uint8_t) b;
}
+4 -3
View File
@@ -1086,7 +1086,8 @@ static int config_parse_size4096(
*sz = parsed;
if (*sz != parsed)
log_syntax(unit, LOG_NOTICE, filename, line, r, "Rounded %s= size %" PRIu64 " → %" PRIu64 ", a multiple of 4096.", lvalue, parsed, *sz);
log_syntax(unit, LOG_NOTICE, filename, line, r, "Rounded %s= size %" PRIu64 " %s %" PRIu64 ", a multiple of 4096.",
lvalue, parsed, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), *sz);
return 0;
}
@@ -4276,8 +4277,8 @@ static int parse_argv(int argc, char *argv[]) {
return log_error_errno(SYNTHETIC_ERRNO(ERANGE), "Specified image size too large, refusing.");
if (rounded != parsed)
log_warning("Specified size is not a multiple of 4096, rounding up automatically. (%" PRIu64 " → %" PRIu64 ")",
parsed, rounded);
log_warning("Specified size is not a multiple of 4096, rounding up automatically. (%" PRIu64 " %s %" PRIu64 ")",
parsed, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), rounded);
arg_size = rounded;
arg_size_auto = false;
+9 -2
View File
@@ -4,6 +4,7 @@
#include "dns-domain.h"
#include "dns-type.h"
#include "event-util.h"
#include "glyph-util.h"
#include "hostname-util.h"
#include "local-addresses.h"
#include "resolved-dns-query.h"
@@ -991,7 +992,10 @@ static int dns_query_cname_redirect(DnsQuery *q, const DnsResourceRecord *cname)
if (r < 0)
return r;
if (r > 0)
log_debug("Following CNAME/DNAME %s → %s.", dns_question_first_name(q->question_idna), dns_question_first_name(nq_idna));
log_debug("Following CNAME/DNAME %s %s %s.",
dns_question_first_name(q->question_idna),
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
dns_question_first_name(nq_idna));
k = dns_question_is_equal(q->question_idna, q->question_utf8);
if (k < 0)
@@ -1005,7 +1009,10 @@ static int dns_query_cname_redirect(DnsQuery *q, const DnsResourceRecord *cname)
if (k < 0)
return k;
if (k > 0)
log_debug("Following UTF8 CNAME/DNAME %s → %s.", dns_question_first_name(q->question_utf8), dns_question_first_name(nq_utf8));
log_debug("Following UTF8 CNAME/DNAME %s %s %s.",
dns_question_first_name(q->question_utf8),
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
dns_question_first_name(nq_utf8));
}
if (r == 0 && k == 0) /* No actual cname happened? */
+8 -6
View File
@@ -8,6 +8,7 @@
#include "errno-list.h"
#include "errno-util.h"
#include "fd-util.h"
#include "glyph-util.h"
#include "random-util.h"
#include "resolved-dns-cache.h"
#include "resolved-dns-transaction.h"
@@ -2572,21 +2573,22 @@ int dns_transaction_request_dnssec_keys(DnsTransaction *t) {
r = dns_name_parent(&name);
if (r > 0) {
type = DNS_TYPE_SOA;
log_debug("Requesting parent SOA (→ %s) to validate transaction %" PRIu16 " (%s, %s empty DS response).",
name, t->id, dns_resource_key_name(dns_transaction_key(t)), signed_status);
log_debug("Requesting parent SOA (%s %s) to validate transaction %" PRIu16 " (%s, %s empty DS response).",
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), name, t->id,
dns_resource_key_name(dns_transaction_key(t)), signed_status);
} else
name = NULL;
} else if (IN_SET(dns_transaction_key(t)->type, DNS_TYPE_SOA, DNS_TYPE_NS)) {
type = DNS_TYPE_DS;
log_debug("Requesting DS (→ %s) to validate transaction %" PRIu16 " (%s, %s empty SOA/NS response).",
name, t->id, name, signed_status);
log_debug("Requesting DS (%s %s) to validate transaction %" PRIu16 " (%s, %s empty SOA/NS response).",
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), name, t->id, name, signed_status);
} else {
type = DNS_TYPE_SOA;
log_debug("Requesting SOA (→ %s) to validate transaction %" PRIu16 " (%s, %s empty non-SOA/NS/DS response).",
name, t->id, name, signed_status);
log_debug("Requesting SOA (%s %s) to validate transaction %" PRIu16 " (%s, %s empty non-SOA/NS/DS response).",
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), name, t->id, name, signed_status);
}
if (name) {
+4 -1
View File
@@ -1,5 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "glyph-util.h"
#include "in-addr-util.h"
#include "resolved-dns-synthesize.h"
#include "resolved-varlink.h"
@@ -370,7 +371,9 @@ static int json_dispatch_address(const char *name, JsonVariant *variant, JsonDis
b = json_variant_integer(i);
if (b < 0 || b > 0xff)
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "Element %zu of JSON field '%s' is out of range 0…255.", k, strna(name));
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL),
"Element %zu of JSON field '%s' is out of range 0%s255.",
k, strna(name), special_glyph(SPECIAL_GLYPH_ELLIPSIS));
buf.bytes[k++] = (uint8_t) b;
}
+3 -1
View File
@@ -7,6 +7,7 @@
#include "fd-util.h"
#include "fileio.h"
#include "generator.h"
#include "glyph-util.h"
#include "mkdir.h"
#include "proc-cmdline.h"
#include "special.h"
@@ -116,7 +117,8 @@ static int generate(void) {
/* And now redirect default.target to our new target */
p = strjoina(arg_dest, "/" SPECIAL_DEFAULT_TARGET);
if (symlink("kernel-command-line.target", p) < 0)
return log_error_errno(errno, "Failed to link unit file kernel-command-line.target → %s: %m", p);
return log_error_errno(errno, "Failed to link unit file kernel-command-line.target %s %s: %m",
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), p);
return 0;
}
+3 -2
View File
@@ -12,6 +12,7 @@
#include "fd-util.h"
#include "format-util.h"
#include "fs-util.h"
#include "glyph-util.h"
#include "set.h"
#include "string-util.h"
#include "util.h"
@@ -212,8 +213,8 @@ int devnode_acl_all(const char *seat,
SET_FOREACH(n, nodes) {
int k;
log_debug("Changing ACLs at %s for seat %s (uid "UID_FMT"→"UID_FMT"%s%s)",
n, seat, old_uid, new_uid,
log_debug("Changing ACLs at %s for seat %s (uid "UID_FMT"%s"UID_FMT"%s%s)",
n, seat, old_uid, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), new_uid,
del ? " del" : "", add ? " add" : "");
k = devnode_acl(n, flush, del, old_uid, add, new_uid);
+5 -3
View File
@@ -7,6 +7,7 @@
#include "alloc-util.h"
#include "dns-domain.h"
#include "glyph-util.h"
#include "hashmap.h"
#include "hexdecoct.h"
#include "hostname-util.h"
@@ -1287,7 +1288,7 @@ int dns_name_apply_idna(const char *name, char **ret) {
r = sym_idn2_lookup_u8((uint8_t*) name, (uint8_t**) &t,
IDN2_NFC_INPUT | IDN2_TRANSITIONAL);
log_debug("idn2_lookup_u8: %s → %s", name, t);
log_debug("idn2_lookup_u8: %s %s %s", name, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), t);
if (r == IDN2_OK) {
if (!startswith(name, "xn--")) {
_cleanup_free_ char *s = NULL;
@@ -1301,8 +1302,9 @@ int dns_name_apply_idna(const char *name, char **ret) {
}
if (!streq_ptr(name, s)) {
log_debug("idn2 roundtrip failed: \"%s\" → \"%s\" → \"%s\", ignoring.",
name, t, s);
log_debug("idn2 roundtrip failed: \"%s\" %s \"%s\" %s \"%s\", ignoring.",
name, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), t,
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), s);
*ret = NULL;
return 0;
}
+2 -1
View File
@@ -522,7 +522,8 @@ static int create_symlink(
}
if (chroot_unit_symlinks_equivalent(lp, new_path, dest, old_path)) {
log_debug("Symlink %s → %s already exists", new_path, dest);
log_debug("Symlink %s %s %s already exists",
new_path, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), dest);
return 1;
}
+3 -2
View File
@@ -17,6 +17,7 @@
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
#include "glyph-util.h"
#include "hashmap.h"
#include "label.h"
#include "libmount-util.h"
@@ -672,8 +673,8 @@ int mount_verbose_full(
log_debug("Bind-mounting %s on %s (%s \"%s\")...",
what, where, strnull(fl), strempty(o));
else if (f & MS_MOVE)
log_debug("Moving mount %s → %s (%s \"%s\")...",
what, where, strnull(fl), strempty(o));
log_debug("Moving mount %s %s %s (%s \"%s\")...",
what, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), where, strnull(fl), strempty(o));
else
log_debug("Mounting %s (%s) on %s (%s \"%s\")...",
strna(what), strna(type), where, strnull(fl), strempty(o));
+17 -5
View File
@@ -6,6 +6,7 @@
#include "dns-domain.h"
#include "env-util.h"
#include "fs-util.h"
#include "glyph-util.h"
#include "hexdecoct.h"
#include "hostname-util.h"
#include "memory-util.h"
@@ -467,7 +468,9 @@ static int json_dispatch_umask(const char *name, JsonVariant *variant, JsonDispa
k = json_variant_unsigned(variant);
if (k > 0777)
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' outside of valid range 0…0777.", strna(name));
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL),
"JSON field '%s' outside of valid range 0%s0777.",
strna(name), special_glyph(SPECIAL_GLYPH_ELLIPSIS));
*m = (mode_t) k;
return 0;
@@ -487,7 +490,9 @@ static int json_dispatch_access_mode(const char *name, JsonVariant *variant, Jso
k = json_variant_unsigned(variant);
if (k > 07777)
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' outside of valid range 0…07777.", strna(name));
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL),
"JSON field '%s' outside of valid range 0%s07777.",
strna(name), special_glyph(SPECIAL_GLYPH_ELLIPSIS));
*m = (mode_t) k;
return 0;
@@ -578,7 +583,9 @@ static int json_dispatch_tasks_or_memory_max(const char *name, JsonVariant *vari
k = json_variant_unsigned(variant);
if (k <= 0 || k >= UINT64_MAX)
return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), "JSON field '%s' is not in valid range %" PRIu64 "…%" PRIu64 ".", strna(name), (uint64_t) 1, UINT64_MAX-1);
return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE),
"JSON field '%s' is not in valid range %" PRIu64 "%s%" PRIu64 ".",
strna(name), (uint64_t) 1, special_glyph(SPECIAL_GLYPH_ELLIPSIS), UINT64_MAX-1);
*limit = k;
return 0;
@@ -597,7 +604,10 @@ static int json_dispatch_weight(const char *name, JsonVariant *variant, JsonDisp
k = json_variant_unsigned(variant);
if (k <= CGROUP_WEIGHT_MIN || k >= CGROUP_WEIGHT_MAX)
return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), "JSON field '%s' is not in valid range %" PRIu64 "…%" PRIu64 ".", strna(name), (uint64_t) CGROUP_WEIGHT_MIN, (uint64_t) CGROUP_WEIGHT_MAX);
return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE),
"JSON field '%s' is not in valid range %" PRIu64 "%s%" PRIu64 ".",
strna(name), (uint64_t) CGROUP_WEIGHT_MIN,
special_glyph(SPECIAL_GLYPH_ELLIPSIS), (uint64_t) CGROUP_WEIGHT_MAX);
*weight = k;
return 0;
@@ -1010,7 +1020,9 @@ static int dispatch_rebalance_weight(const char *name, JsonVariant *variant, Jso
else if (u == 0)
*rebalance_weight = REBALANCE_WEIGHT_OFF;
else
return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), "Rebalance weight is out of valid range %" PRIu64 "…%" PRIu64 ".", REBALANCE_WEIGHT_MIN, REBALANCE_WEIGHT_MAX);
return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE),
"Rebalance weight is out of valid range %" PRIu64 "%s%" PRIu64 ".",
REBALANCE_WEIGHT_MIN, special_glyph(SPECIAL_GLYPH_ELLIPSIS), REBALANCE_WEIGHT_MAX);
return 0;
}
+3 -1
View File
@@ -6,6 +6,7 @@
#include "alloc-util.h"
#include "errno-util.h"
#include "fd-util.h"
#include "glyph-util.h"
#include "hashmap.h"
#include "io-util.h"
#include "list.h"
@@ -236,8 +237,9 @@ static void varlink_set_state(Varlink *v, VarlinkState state) {
varlink_log(v, "Setting state %s",
varlink_state_to_string(state));
else
varlink_log(v, "Changing state %s → %s",
varlink_log(v, "Changing state %s %s %s",
varlink_state_to_string(v->state),
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
varlink_state_to_string(state));
v->state = state;
+2 -1
View File
@@ -260,7 +260,8 @@ static int download_manifest(
if (pipe2(pfd, O_CLOEXEC) < 0)
return log_error_errno(errno, "Failed to allocate pipe: %m");
log_info("%s Acquiring manifest file %s…", special_glyph(SPECIAL_GLYPH_DOWNLOAD), suffixed_url);
log_info("%s Acquiring manifest file %s%s", special_glyph(SPECIAL_GLYPH_DOWNLOAD),
suffixed_url, special_glyph(SPECIAL_GLYPH_ELLIPSIS));
r = safe_fork("(sd-pull)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &pid);
if (r < 0)
+6 -2
View File
@@ -1237,9 +1237,13 @@ int transfer_install_instance(
r = symlink_atomic(relative, link_path);
if (r < 0)
return log_error_errno(r, "Failed to update current symlink '%s' → '%s': %m", link_path, relative);
return log_error_errno(r, "Failed to update current symlink '%s' %s '%s': %m",
link_path,
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
relative);
log_info("Updated symlink '%s' → '%s'.", link_path, relative);
log_info("Updated symlink '%s' %s '%s'.",
link_path, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), relative);
}
}
+7 -7
View File
@@ -170,7 +170,7 @@ static int context_load_installed_instances(Context *c) {
assert(c);
log_info("Discovering installed instances…");
log_info("Discovering installed instances%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
for (size_t i = 0; i < c->n_transfers; i++) {
r = resource_load_instances(
@@ -189,7 +189,7 @@ static int context_load_available_instances(Context *c) {
assert(c);
log_info("Discovering available instances…");
log_info("Discovering available instances%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
for (size_t i = 0; i < c->n_transfers; i++) {
assert(c->transfers[i]);
@@ -346,13 +346,13 @@ static int context_discover_update_sets(Context *c) {
assert(c);
log_info("Determining installed update sets…");
log_info("Determining installed update sets%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
r = context_discover_update_sets_by_flag(c, UPDATE_INSTALLED);
if (r < 0)
return r;
log_info("Determining available update sets…");
log_info("Determining available update sets%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
r = context_discover_update_sets_by_flag(c, UPDATE_AVAILABLE);
if (r < 0)
@@ -671,9 +671,9 @@ static int context_vacuum(
assert(c);
if (space == 0)
log_info("Making room…");
log_info("Making room%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
else
log_info("Making room for %" PRIu64 " updates…", space);
log_info("Making room for %" PRIu64 " updates%s", space,special_glyph(SPECIAL_GLYPH_ELLIPSIS));
for (size_t i = 0; i < c->n_transfers; i++) {
r = transfer_vacuum(c->transfers[i], space, extra_protected_version);
@@ -1035,7 +1035,7 @@ static int verb_pending_or_reboot(int argc, char **argv, void *userdata) {
if (r < 0)
return r;
log_info("Determining installed update sets…");
log_info("Determining installed update sets%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
r = context_discover_update_sets_by_flag(context, UPDATE_INSTALLED);
if (r < 0)
+6 -6
View File
@@ -405,7 +405,7 @@ static int write_temporary_passwd(const char *passwd_path, FILE **tmpfile, char
return 0;
if (arg_dry_run) {
log_info("Would write /etc/passwd…");
log_info("Would write /etc/passwd%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
return 0;
}
@@ -529,7 +529,7 @@ static int write_temporary_shadow(const char *shadow_path, FILE **tmpfile, char
return 0;
if (arg_dry_run) {
log_info("Would write /etc/shadow…");
log_info("Would write /etc/shadow%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
return 0;
}
@@ -667,7 +667,7 @@ static int write_temporary_group(const char *group_path, FILE **tmpfile, char **
return 0;
if (arg_dry_run) {
log_info("Would write /etc/group…");
log_info("Would write /etc/group%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
return 0;
}
@@ -773,7 +773,7 @@ static int write_temporary_gshadow(const char * gshadow_path, FILE **tmpfile, ch
return 0;
if (arg_dry_run) {
log_info("Would write /etc/gshadow…");
log_info("Would write /etc/gshadow%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
return 0;
}
@@ -2002,13 +2002,13 @@ static int read_config_files(char **args) {
STRV_FOREACH(f, files)
if (p && path_equal(*f, p)) {
log_debug("Parsing arguments at position \"%s\"…", *f);
log_debug("Parsing arguments at position \"%s\"%s", *f, special_glyph(SPECIAL_GLYPH_ELLIPSIS));
r = parse_arguments(args);
if (r < 0)
return r;
} else {
log_debug("Reading config file \"%s\"…", *f);
log_debug("Reading config file \"%s\"%s", *f, special_glyph(SPECIAL_GLYPH_ELLIPSIS));
/* Just warn, ignore result otherwise */
(void) read_config_file(*f, true);
+3 -3
View File
@@ -3526,7 +3526,7 @@ static int read_config_file(char **config_dirs, const char *fn, bool ignore_enoe
assert(fn);
if (streq(fn, "-")) {
log_debug("Reading config from stdin…");
log_debug("Reading config from stdin%s", special_glyph(SPECIAL_GLYPH_ELLIPSIS));
fn = "<stdin>";
f = stdin;
} else {
@@ -3540,7 +3540,7 @@ static int read_config_file(char **config_dirs, const char *fn, bool ignore_enoe
return log_error_errno(r, "Failed to open '%s': %m", fn);
}
log_debug("Reading config file \"%s\"…", pp);
log_debug("Reading config file \"%s\"%s", pp, special_glyph(SPECIAL_GLYPH_ELLIPSIS));
fn = pp;
f = _f;
}
@@ -3643,7 +3643,7 @@ static int read_config_files(char **config_dirs, char **args, bool *invalid_conf
STRV_FOREACH(f, files)
if (p && path_equal(*f, p)) {
log_debug("Parsing arguments at position \"%s\"…", *f);
log_debug("Parsing arguments at position \"%s\"%s", *f, special_glyph(SPECIAL_GLYPH_ELLIPSIS));
r = parse_arguments(config_dirs, args, invalid_config);
if (r < 0)
+21 -15
View File
@@ -28,6 +28,7 @@
#include "dirent-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "glyph-util.h"
#include "netif-naming-scheme.h"
#include "parse-util.h"
#include "proc-cmdline.h"
@@ -215,9 +216,9 @@ static int dev_pci_onboard(sd_device *dev, const LinkInfo *info, NetNames *names
l = strpcpyf(&s, l, "d%lu", dev_port);
if (l == 0)
names->pci_onboard[0] = '\0';
log_device_debug(dev, "Onboard index identifier: index=%lu phys_port=%s dev_port=%lu → %s",
log_device_debug(dev, "Onboard index identifier: index=%lu phys_port=%s dev_port=%lu %s %s",
idx, strempty(info->phys_port_name), dev_port,
empty_to_na(names->pci_onboard));
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), empty_to_na(names->pci_onboard));
if (sd_device_get_sysattr_value(names->pcidev, "label", &names->pci_onboard_label) >= 0)
log_device_debug(dev, "Onboard label from PCI device: %s", names->pci_onboard_label);
@@ -393,9 +394,9 @@ static int dev_pci_slot(sd_device *dev, const LinkInfo *info, NetNames *names) {
if (l == 0)
names->pci_path[0] = '\0';
log_device_debug(dev, "PCI path identifier: domain=%u bus=%u slot=%u func=%u phys_port=%s dev_port=%lu → %s",
log_device_debug(dev, "PCI path identifier: domain=%u bus=%u slot=%u func=%u phys_port=%s dev_port=%lu %s %s",
domain, bus, slot, func, strempty(info->phys_port_name), dev_port,
empty_to_na(names->pci_path));
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), empty_to_na(names->pci_path));
/* ACPI _SUN — slot user number */
r = sd_device_new_from_subsystem_sysname(&pci, "subsystem", "pci");
@@ -487,9 +488,9 @@ static int dev_pci_slot(sd_device *dev, const LinkInfo *info, NetNames *names) {
if (l == 0)
names->pci_slot[0] = '\0';
log_device_debug(dev, "Slot identifier: domain=%u slot=%"PRIu32" func=%u phys_port=%s dev_port=%lu → %s",
log_device_debug(dev, "Slot identifier: domain=%u slot=%"PRIu32" func=%u phys_port=%s dev_port=%lu %s %s",
domain, hotplug_slot, func, strempty(info->phys_port_name), dev_port,
empty_to_na(names->pci_slot));
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), empty_to_na(names->pci_slot));
}
return 0;
@@ -529,7 +530,8 @@ static int names_vio(sd_device *dev, NetNames *names) {
xsprintf(names->vio_slot, "v%u", slotid);
names->type = NET_VIO;
log_device_debug(dev, "Vio slot identifier: slotid=%u → %s", slotid, names->vio_slot);
log_device_debug(dev, "Vio slot identifier: slotid=%u %s %s",
slotid, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), names->vio_slot);
return 0;
}
@@ -596,8 +598,8 @@ static int names_platform(sd_device *dev, NetNames *names, bool test) {
xsprintf(names->platform_path, "a%s%xi%u", vendor, model, instance);
names->type = NET_PLATFORM;
log_device_debug(dev, "Platform identifier: vendor=%s model=%u instance=%u → %s",
vendor, model, instance, names->platform_path);
log_device_debug(dev, "Platform identifier: vendor=%s model=%u instance=%u %s %s",
vendor, model, instance, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), names->platform_path);
return 0;
}
@@ -718,8 +720,9 @@ static int names_usb(sd_device *dev, NetNames *names) {
if (l == 0)
return log_device_debug_errno(dev, SYNTHETIC_ERRNO(ENAMETOOLONG),
"Generated USB name would be too long.");
log_device_debug(dev, "USB name identifier: ports=%.*s config=%s interface=%s → %s",
(int) strlen(ports), sysname + (ports - name), config, interf, names->usb_ports);
log_device_debug(dev, "USB name identifier: ports=%.*s config=%s interface=%s %s %s",
(int) strlen(ports), sysname + (ports - name), config, interf,
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), names->usb_ports);
names->type = NET_USB;
return 0;
}
@@ -752,7 +755,8 @@ static int names_bcma(sd_device *dev, NetNames *names) {
xsprintf(names->bcma_core, "b%u", core);
names->type = NET_BCMA;
log_device_debug(dev, "BCMA core identifier: core=%u → \"%s\"", core, names->bcma_core);
log_device_debug(dev, "BCMA core identifier: core=%u %s \"%s\"",
core, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), names->bcma_core);
return 0;
}
@@ -813,7 +817,8 @@ static int names_ccw(sd_device *dev, NetNames *names) {
return log_device_debug_errno(dev, SYNTHETIC_ERRNO(ENAMETOOLONG),
"Generated CCW name would be too long.");
names->type = NET_CCW;
log_device_debug(dev, "CCW identifier: ccw_busid=%s → \"%s\"", bus_id, names->ccw_busid);
log_device_debug(dev, "CCW identifier: ccw_busid=%s %s \"%s\"",
bus_id, special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), names->ccw_busid);
return 0;
}
@@ -1027,8 +1032,9 @@ static int builtin_net_id(sd_device *dev, sd_netlink **rtnl, int argc, char *arg
xsprintf(str, "%sx%s", prefix, HW_ADDR_TO_STR_FULL(&info.hw_addr, HW_ADDR_TO_STRING_NO_COLON));
udev_builtin_add_property(dev, test, "ID_NET_NAME_MAC", str);
log_device_debug(dev, "MAC address identifier: hw_addr=%s → %s",
HW_ADDR_TO_STR(&info.hw_addr), str + strlen(prefix));
log_device_debug(dev, "MAC address identifier: hw_addr=%s %s %s",
HW_ADDR_TO_STR(&info.hw_addr),
special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), str + strlen(prefix));
ieee_oui(dev, &info, test);
}
+5 -4
View File
@@ -235,7 +235,7 @@ static int lock_device(
if (deadline == USEC_INFINITY) {
log_info("Device '%s' is currently locked, waiting…", path);
log_info("Device '%s' is currently locked, waiting%s", path, special_glyph(SPECIAL_GLYPH_ELLIPSIS));
if (flock(fd, LOCK_EX) < 0)
return log_error_errno(errno, "Failed to lock device '%s': %m", path);
@@ -251,8 +251,9 @@ static int lock_device(
* instead do the lock out-of-process: fork off a child that does the locking, and
* that we'll wait on and kill if it takes too long. */
log_info("Device '%s' is currently locked, waiting %s…",
path, FORMAT_TIMESPAN(usec_sub_unsigned(deadline, now(CLOCK_MONOTONIC)), 0));
log_info("Device '%s' is currently locked, waiting %s%s",
path, FORMAT_TIMESPAN(usec_sub_unsigned(deadline, now(CLOCK_MONOTONIC)), 0),
special_glyph(SPECIAL_GLYPH_ELLIPSIS));
BLOCK_SIGNALS(SIGCHLD);
@@ -311,7 +312,7 @@ static int lock_device(
}
}
log_debug("Successfully locked %s (%u:%u)…", path, major(devno), minor(devno));
log_debug("Successfully locked %s (%u:%u)%s", path, major(devno), minor(devno), special_glyph(SPECIAL_GLYPH_ELLIPSIS));
return TAKE_FD(fd);
}
@@ -7,6 +7,7 @@
#include "dirent-util.h"
#include "fd-util.h"
#include "generator.h"
#include "glyph-util.h"
#include "hashmap.h"
#include "log.h"
#include "main-func.h"
@@ -43,7 +44,7 @@ static int enumerate_xdg_autostart(Hashmap *all_services) {
STRV_FOREACH(path, autostart_dirs) {
_cleanup_closedir_ DIR *d = NULL;
log_debug("Scanning autostart directory \"%s\"…", *path);
log_debug("Scanning autostart directory \"%s\"%s", *path, special_glyph(SPECIAL_GLYPH_ELLIPSIS));
d = opendir(*path);
if (!d) {
log_full_errno(errno == ENOENT ? LOG_DEBUG : LOG_WARNING, errno,
@@ -483,8 +483,9 @@ static int xdg_autostart_generate_desktop_condition(
if (!e_autostart_condition)
return log_oom();
log_debug("%s: ExecCondition converted to %s --condition \"%s\"…",
service->path, gnome_autostart_condition_path, e_autostart_condition);
log_debug("%s: ExecCondition converted to %s --condition \"%s\"%s",
service->path, gnome_autostart_condition_path, e_autostart_condition,
special_glyph(SPECIAL_GLYPH_ELLIPSIS));
fprintf(f,
"ExecCondition=%s --condition \"%s\"\n",
@@ -638,6 +639,7 @@ int xdg_autostart_service_generate_unit(
if (r < 0)
return r;
log_debug("%s: symlinking %s in xdg-desktop-autostart.target/.wants…", service->path, service->name);
log_debug("%s: symlinking %s in xdg-desktop-autostart.target/.wants%s",
service->path, service->name, special_glyph(SPECIAL_GLYPH_ELLIPSIS));
return generator_add_symlink(dest, "xdg-desktop-autostart.target", "wants", service->name);
}