bool
confitem_parse_sloppiness(const char *str, void *result, char **errmsg)
{
+ (void)errmsg;
+
unsigned *value = (unsigned *)result;
if (!str) {
return *value;
*value |= SLOPPY_CLANG_INDEX_STORE;
} else if (str_eq(word, "locale")) {
*value |= SLOPPY_LOCALE;
- } else {
- *errmsg = format("unknown sloppiness: \"%s\"", word);
- free(p);
- return false;
}
+ // else: ignore unknown value for forward compatibility
q = NULL;
}
free(p);
conf_free(conf);
}
-TEST(conf_read_invalid_sloppiness)
+TEST(conf_read_unknown_sloppiness)
{
struct conf *conf = conf_create();
char *errmsg;
- create_file("ccache.conf", "sloppiness = file_macro, foo");
- CHECK(!conf_read(conf, "ccache.conf", &errmsg));
- CHECK_INT_EQ(errno, 0);
- CHECK_STR_EQ_FREE2("ccache.conf:1: unknown sloppiness: \"foo\"",
- errmsg);
+ create_file("ccache.conf", "sloppiness = time_macros, foo");
+ CHECK(conf_read(conf, "ccache.conf", &errmsg));
+ CHECK_INT_EQ(conf->sloppiness, SLOPPY_TIME_MACROS);
conf_free(conf);
}
CHECK_STR_EQ_FREE2("path = chocolate\nstats = chocolate\n", data);
}
+TEST(conf_set_unknown_sloppiness)
+{
+ char *errmsg;
+ char *data;
+
+ create_file("ccache.conf", "path = vanilla\n");
+ CHECK(conf_set_value_in_file("ccache.conf", "sloppiness", "foo", &errmsg));
+
+ data = read_text_file("ccache.conf", 0);
+ CHECK(data);
+ CHECK_STR_EQ_FREE2("path = vanilla\nsloppiness = foo\n", data);
+}
+
TEST(conf_print_existing_value)
{
struct conf *conf = conf_create();