if (r < 0)
return r;
- if (all || !isempty(s))
- print_property(name, "%s", s);
+ if (all || !isempty(s)) {
+ bool good;
+
+ /* This property has a single value, so we need to take
+ * care not to print a new line, everything else is OK. */
+ good = !strchr(s, '\n');
+ print_property(name, "%s", good ? s : "[unprintable]");
+ }
return 1;
}
return r;
while ((r = sd_bus_message_read_basic(property, SD_BUS_TYPE_STRING, &str)) > 0) {
+ bool good;
+
if (first && !value)
printf("%s=", name);
- printf("%s%s", first ? "" : " ", str);
+ /* This property has multiple space-seperated values, so
+ * neither spaces not newlines can be allowed in a value. */
+ good = str[strcspn(str, " \n")] == '\0';
+
+ printf("%s%s", first ? "" : " ", good ? str : "[unprintable]");
first = false;
}