127
int parse_submodule_config_option(const char *var, const char *value)
128
{
129
struct string_list_item *config;
130
- struct strbuf submodname = STRBUF_INIT;
130
const char *name, *key;
131
int namelen;
132
134
return 0;
135
136
if (!strcmp(key, "path")) {
138
- strbuf_add(&submodname, name, namelen);
137
config = unsorted_string_list_lookup(&config_name_for_path, value);
138
if (config)
139
free(config->util);
140
else
141
config = string_list_append(&config_name_for_path, xstrdup(value));
144
- config->util = strbuf_detach(&submodname, NULL);
145
- strbuf_release(&submodname);
142
+ config->util = xmemdupz(name, namelen);
143
} else if (!strcmp(key, "fetchrecursesubmodules")) {
147
- strbuf_add(&submodname, name, namelen);
148
- config = unsorted_string_list_lookup(&config_fetch_recurse_submodules_for_name, submodname.buf);
144
+ char *name_cstr = xmemdupz(name, namelen);
145
+ config = unsorted_string_list_lookup(&config_fetch_recurse_submodules_for_name, name_cstr);
146
if (!config)
150
- config = string_list_append(&config_fetch_recurse_submodules_for_name,
151
- strbuf_detach(&submodname, NULL));
147
+ config = string_list_append(&config_fetch_recurse_submodules_for_name, name_cstr);
148
+ else
149
+ free(name_cstr);
150
config->util = (void *)(intptr_t)parse_fetch_recurse_submodules_arg(var, value);
153
- strbuf_release(&submodname);
151
} else if (!strcmp(key, "ignore")) {
152
+ char *name_cstr;
153
+
154
if (strcmp(value, "untracked") && strcmp(value, "dirty") &&
155
strcmp(value, "all") && strcmp(value, "none")) {
156
warning("Invalid parameter \"%s\" for config option \"submodule.%s.ignore\"", value, var);
157
return 0;
158
}
159
161
- strbuf_add(&submodname, name, namelen);
162
- config = unsorted_string_list_lookup(&config_ignore_for_name, submodname.buf);
163
- if (config)
160
+ name_cstr = xmemdupz(name, namelen);
161
+ config = unsorted_string_list_lookup(&config_ignore_for_name, name_cstr);
162
+ if (config) {
163
free(config->util);
165
- else
166
- config = string_list_append(&config_ignore_for_name,
167
- strbuf_detach(&submodname, NULL));
168
- strbuf_release(&submodname);
164
+ free(name_cstr);
165
+ } else
166
+ config = string_list_append(&config_ignore_for_name, name_cstr);
167
config->util = xstrdup(value);
168
return 0;
169
}