int git_config_from_parameters(config_fn_t fn, void *data) { const char *env = getenv(CONFIG_DATA_ENVIRONMENT); char *envw; const char **argv = NULL; int nr = 0, alloc = 0; int i; if (!env) return 0; /* sq_dequote will write over it */ envw = xstrdup(env); if (sq_dequote_to_argv(envw, &argv, &nr, &alloc) < 0) { free(envw); return error("bogus format in " CONFIG_DATA_ENVIRONMENT); } for (i = 0; i < nr; i++) { if (git_config_parse_parameter(argv[i], fn, data) < 0) { free(argv); free(envw); return -1; } } free(argv); free(envw); return nr > 0; }
int git_config_parse_environment(void) { const char *env = getenv(CONFIG_DATA_ENVIRONMENT); char *envw; const char **argv = NULL; int nr = 0, alloc = 0; int i; if (!env) return 0; /* sq_dequote will write over it */ envw = xstrdup(env); if (sq_dequote_to_argv(envw, &argv, &nr, &alloc) < 0) { free(envw); return error("bogus format in " CONFIG_DATA_ENVIRONMENT); } for (i = 0; i < nr; i++) { if (git_config_parse_parameter(argv[i]) < 0) { error("bogus config parameter: %s", argv[i]); free(argv); free(envw); return -1; } } free(argv); free(envw); return 0; }
static void read_bisect_paths(struct argv_array *array) { struct strbuf str = STRBUF_INIT; const char *filename = git_path("BISECT_NAMES"); FILE *fp = fopen(filename, "r"); if (!fp) die_errno("Could not open file '%s'", filename); while (strbuf_getline(&str, fp, '\n') != EOF) { char *quoted; int res; strbuf_trim(&str); quoted = strbuf_detach(&str, NULL); res = sq_dequote_to_argv(quoted, &array->argv, &array->argv_nr, &array->argv_alloc); if (res) die("Badly quoted content in file '%s': %s", filename, quoted); } strbuf_release(&str); fclose(fp); }