|
@@ -34,8 +34,7 @@ static struct option config_options[] = {
|
|
|
OPT_END()
|
|
|
};
|
|
|
|
|
|
-static int set_config(struct perf_config_set *set, const char *file_name,
|
|
|
- const char *var, const char *value)
|
|
|
+static int set_config(struct perf_config_set *set, const char *file_name)
|
|
|
{
|
|
|
struct perf_config_section *section = NULL;
|
|
|
struct perf_config_item *item = NULL;
|
|
@@ -49,7 +48,6 @@ static int set_config(struct perf_config_set *set, const char *file_name,
|
|
|
if (!fp)
|
|
|
return -1;
|
|
|
|
|
|
- perf_config_set__collect(set, file_name, var, value);
|
|
|
fprintf(fp, "%s\n", first_line);
|
|
|
|
|
|
/* overwrite configvariables */
|
|
@@ -161,6 +159,7 @@ int cmd_config(int argc, const char **argv)
|
|
|
struct perf_config_set *set;
|
|
|
char *user_config = mkpath("%s/.perfconfig", getenv("HOME"));
|
|
|
const char *config_filename;
|
|
|
+ bool changed = false;
|
|
|
|
|
|
argc = parse_options(argc, argv, config_options, config_usage,
|
|
|
PARSE_OPT_STOP_AT_NON_OPTION);
|
|
@@ -231,15 +230,26 @@ int cmd_config(int argc, const char **argv)
|
|
|
goto out_err;
|
|
|
}
|
|
|
} else {
|
|
|
- if (set_config(set, config_filename, var, value) < 0) {
|
|
|
- pr_err("Failed to set '%s=%s' on %s\n",
|
|
|
- var, value, config_filename);
|
|
|
+ if (perf_config_set__collect(set, config_filename,
|
|
|
+ var, value) < 0) {
|
|
|
+ pr_err("Failed to add '%s=%s'\n",
|
|
|
+ var, value);
|
|
|
free(arg);
|
|
|
goto out_err;
|
|
|
}
|
|
|
+ changed = true;
|
|
|
}
|
|
|
free(arg);
|
|
|
}
|
|
|
+
|
|
|
+ if (!changed)
|
|
|
+ break;
|
|
|
+
|
|
|
+ if (set_config(set, config_filename) < 0) {
|
|
|
+ pr_err("Failed to set the configs on %s\n",
|
|
|
+ config_filename);
|
|
|
+ goto out_err;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
ret = 0;
|