if (r < 0)
return r;
- r = parse_key_value_argument(optarg, &k, &v);
+ r = parse_key_value_argument(optarg, /* require_value= */ true, &k, &v);
if (r < 0)
return r;
if (r < 0)
return r;
- r = parse_key_value_argument(optarg, &k, &v);
+ r = parse_key_value_argument(optarg, /* require_value= */ true, &k, &v);
if (r < 0)
return r;
return 1;
}
-int parse_key_value_argument(const char *s, char **key, char **value) {
+int parse_key_value_argument(const char *s, bool require_value, char **key, char **value) {
_cleanup_free_ char *k = NULL, *v = NULL;
int r;
r = extract_many_words(&s, "=", EXTRACT_DONT_COALESCE_SEPARATORS, &k, &v);
if (r < 0)
return log_error_errno(r, "Failed to parse key/value pair %s: %m", s);
- if (r < 2)
+ if (require_value && r < 2)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Missing '=' in key/value pair %s.", s);
if (!filename_is_valid(k))
int find_device_with_action(const char *id, sd_device_action_t action, sd_device **ret);
int parse_device_action(const char *str, sd_device_action_t *ret);
int parse_resolve_name_timing(const char *str, ResolveNameTiming *ret);
-int parse_key_value_argument(const char *s, char **key, char **value);
+int parse_key_value_argument(const char *s, bool require_value, char **key, char **value);
int udev_ping(usec_t timeout, bool ignore_connection_failure);
int search_rules_files(char * const *a, const char *root, char ***ret);