* user input, like crypto devices. */
_cleanup_free_ char *node = NULL, *unit = NULL, *t = NULL;
- char *prefix, *start, *timeout, *postfix;
+ char *start, *timeout;
usec_t u;
int r;
size_t len;
else if ((start = mount_test_option(opts, "x-systemd.device-timeout")))
timeout = start + 25;
else {
- *filtered = strdup(opts);
- if (!*filtered)
- return log_oom();
+ if (filtered) {
+ *filtered = strdup(opts ?: "");
+ if (!*filtered)
+ return log_oom();
+ }
return 0;
}
if (!t)
return -ENOMEM;
- prefix = strndupa(opts, start - opts - (start != opts));
- postfix = timeout + len + (timeout[len] != '\0');
- *filtered = strjoin(prefix, *postfix ? postfix : NULL, NULL);
- if (!*filtered)
- return log_oom();
+ if (filtered) {
+ char *prefix, *postfix;
+
+ prefix = strndupa(opts, start - opts - (start != opts));
+ postfix = timeout + len + (start == opts && timeout[len] != '\0');
+ *filtered = strjoin(prefix, *postfix ? postfix : NULL, NULL);
+ if (!*filtered)
+ return log_oom();
+ }
r = parse_sec(t, &u);
if (r < 0) {
if (!unit)
return -ENOMEM;
- return write_drop_in_format(dir, unit, "device-timeout",
- "[Unit]\nJobTimeoutSec=%u", u / USEC_PER_SEC);
+ return write_drop_in_format(dir, unit, 50, "device-timeout",
+ "# Automatically generated by %s\n\n"
+ "[Unit]\nJobTimeoutSec=" USEC_FMT,
+ program_invocation_short_name,
+ u / USEC_PER_SEC);
}