config_parse.h 1.46 KB
Newer Older
1 2 3 4 5 6
/*
 * 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.
 */
7 8
#ifndef INCLUDE_config_parse_h__
#define INCLUDE_config_parse_h__
9 10 11 12

#include "common.h"
#include "array.h"
#include "oid.h"
13
#include "parse.h"
14 15 16 17 18 19 20 21 22 23 24 25

static const char *git_config_escapes = "ntb\"\\";
static const char *git_config_escaped = "\n\t\b\"\\";

typedef struct config_file {
	git_oid checksum;
	char *path;
	git_array_t(struct config_file) includes;
} git_config_file;

typedef struct {
	struct config_file *file;
26
	git_parse_ctx ctx;
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
} git_config_parser;

typedef int (*git_config_parser_section_cb)(
	git_config_parser *parser,
	const char *current_section,
	const char *line,
	size_t line_len,
	void *data);

typedef int (*git_config_parser_variable_cb)(
	git_config_parser *parser,
	const char *current_section,
	char *var_name,
	char *var_value,
	const char *line,
	size_t line_len,
	void *data);

typedef int (*git_config_parser_comment_cb)(
	git_config_parser *parser,
	const char *line,
	size_t line_len,
	void *data);

typedef int (*git_config_parser_eof_cb)(
	git_config_parser *parser,
	const char *current_section,
	void *data);

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 *data);
63 64

#endif