for (i = index; i < argc; i++) {
int rc2;
+ path = NULL;
value = strchr(argv[i], '=');
if (value != NULL) {
/* format: set_param a=b */
- if (path != NULL) {
- /* broken value "set_param a b=c" */
- fprintf(stderr,
- "error: %s: setting %s=%s: bad value\n",
- jt_cmdname(argv[0]), path, argv[i]);
- if (rc == 0)
- rc = EINVAL;
- path = NULL;
- break;
- }
*value = '\0';
value++;
path = argv[i];
"error: %s: setting %s: no value\n",
jt_cmdname(argv[0]), path);
if (rc == 0)
- rc = EINVAL;
+ rc = -EINVAL;
continue;
}
} else {
/* format: set_param a b */
- if (path == NULL) {
- path = argv[i];
- continue;
+ path = argv[i];
+ i++;
+ if (i >= argc) {
+ fprintf(stderr,
+ "error: %s: setting %s: no value\n",
+ jt_cmdname(argv[0]), path);
+ if (rc == 0)
+ rc = -EINVAL;
+ break;
} else {
value = argv[i];
}
continue;
}
+ /* A value containing '=' is indicative of user error, e.g.:
+ * lctl set_param param1 param2=value2
+ * lctl set_param param1=param2=value2
+ */
+ if (strchr(value, '=') != NULL)
+ fprintf(stderr,
+ "warning: %s: value '%s' contains '='\n",
+ jt_cmdname(argv[0]), value);
+
rc2 = param_display(&popt, path, value, SET_PARAM);
if (rc == 0)
rc = rc2;
- path = NULL;
- value = NULL;
}
return rc;