diff options
Diffstat (limited to 'src/libgit2/config_parse.h')
-rw-r--r-- | src/libgit2/config_parse.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/libgit2/config_parse.h b/src/libgit2/config_parse.h new file mode 100644 index 000000000..b791d3245 --- /dev/null +++ b/src/libgit2/config_parse.h @@ -0,0 +1,65 @@ +/* + * 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_parse_h__ +#define INCLUDE_config_parse_h__ + +#include "common.h" + +#include "array.h" +#include "futils.h" +#include "oid.h" +#include "parse.h" + +extern const char *git_config_escapes; +extern const char *git_config_escaped; + +typedef struct { + const char *path; + git_parse_ctx ctx; +} git_config_parser; + +#define GIT_CONFIG_PARSER_INIT { NULL, GIT_PARSE_CTX_INIT } + +typedef int (*git_config_parser_section_cb)( + git_config_parser *parser, + const char *current_section, + const char *line, + size_t line_len, + void *payload); + +typedef int (*git_config_parser_variable_cb)( + git_config_parser *parser, + const char *current_section, + const char *var_name, + const char *var_value, + const char *line, + size_t line_len, + void *payload); + +typedef int (*git_config_parser_comment_cb)( + git_config_parser *parser, + const char *line, + size_t line_len, + void *payload); + +typedef int (*git_config_parser_eof_cb)( + git_config_parser *parser, + const char *current_section, + void *payload); + +int git_config_parser_init(git_config_parser *out, const char *path, const char *data, size_t datalen); +void git_config_parser_dispose(git_config_parser *parser); + +int git_config_parse( + git_config_parser *parser, + git_config_parser_section_cb on_section, + git_config_parser_variable_cb on_variable, + git_config_parser_comment_cb on_comment, + git_config_parser_eof_cb on_eof, + void *payload); + +#endif |