summaryrefslogtreecommitdiff
path: root/src/libgit2/config_parse.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libgit2/config_parse.h')
-rw-r--r--src/libgit2/config_parse.h65
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