/* * Copyright (C) the libgit2 contributors. All rights reserved. * * This file is part of libgit2, distributed under the GNU GPL v2 with * a Linking Exception. For full terms see the included COPYING file. */ #ifndef INCLUDE_config_file_h__ #define INCLUDE_config_file_h__ #include "common.h" #include "git2/sys/config.h" #include "git2/config.h" /** * Create a configuration file backend for ondisk files * * These are the normal `.gitconfig` files that Core Git * processes. Note that you first have to add this file to a * configuration object before you can query it for configuration * variables. * * @param out the new backend * @param path where the config file is located */ extern int git_config_backend_from_file(git_config_backend **out, const char *path); /** * Create a readonly configuration file backend from another backend * * This copies the complete contents of the source backend to the * new backend. The new backend will be completely read-only and * cannot be modified. * * @param out the new snapshotted backend * @param source the backend to copy */ extern int git_config_backend_snapshot(git_config_backend **out, git_config_backend *source); /** * Create an in-memory configuration file backend * * @param out the new backend * @param cfg the configuration that is to be parsed * @param len the length of the string pointed to by `cfg` */ extern int git_config_backend_from_string(git_config_backend **out, const char *cfg, size_t len); GIT_INLINE(int) git_config_backend_open(git_config_backend *cfg, unsigned int level, const git_repository *repo) { return cfg->open(cfg, level, repo); } GIT_INLINE(void) git_config_backend_free(git_config_backend *cfg) { if (cfg) cfg->free(cfg); } GIT_INLINE(int) git_config_backend_get_string( git_config_entry **out, git_config_backend *cfg, const char *name) { return cfg->get(cfg, name, out); } GIT_INLINE(int) git_config_backend_set_string( git_config_backend *cfg, const char *name, const char *value) { return cfg->set(cfg, name, value); } GIT_INLINE(int) git_config_backend_delete( git_config_backend *cfg, const char *name) { return cfg->del(cfg, name); } GIT_INLINE(int) git_config_backend_foreach( git_config_backend *cfg, int (*fn)(const git_config_entry *entry, void *data), void *data) { return git_config_backend_foreach_match(cfg, NULL, fn, data); } GIT_INLINE(int) git_config_backend_lock(git_config_backend *cfg) { return cfg->lock(cfg); } GIT_INLINE(int) git_config_backend_unlock(git_config_backend *cfg, int success) { return cfg->unlock(cfg, success); } #endif