Skip to content

Commit 39509e7

Browse files
committed
feat: Add API from git2/sys/config.h
Added struct `git_config_backend_entry`. See git2/sys/config.h line 27. Added struct `git_config_iterator`. Previously incorrectly defined as an empty enum. See git2/sys/config.h line 49. Added struct `git_config_backend`. See git2/sys/config.h line 69. Added constant `GIT_CONFIG_BACKEND_VERSION`. See git2/sys/config.h line 103. Added struct `git_config_backend_memory_options`. See git2/sys/config.h line 148. Added constant `GIT_CONFIG_BACKEND_MEMORY_OPTIONS_VERSION`. See git2/sys/config.h line 165. Added function `git_config_add_backend`. See git2/sys/config.h line 140. Added function `git_config_backend_from_string`. See git2/sys/config.h line 181. Added function `git_config_backend_from_values`. See git2/sys/config.h line 197. Added function `git_config_init_backend`. See git2/sys/config.h line 116.
1 parent 737496d commit 39509e7

File tree

1 file changed

+83
-2
lines changed

1 file changed

+83
-2
lines changed

libgit2-sys/lib.rs

Lines changed: 83 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,68 @@ pub enum git_branch_iterator {}
5555
pub enum git_blame {}
5656
pub enum git_commit {}
5757
pub enum git_config {}
58-
pub enum git_config_iterator {}
58+
59+
#[repr(C)]
60+
pub struct git_config_backend_entry {
61+
pub entry: git_config_entry,
62+
pub free: Option<extern "C" fn(*mut git_config_backend_entry)>,
63+
}
64+
65+
#[repr(C)]
66+
pub struct git_config_iterator {
67+
pub backend: *mut git_config_backend,
68+
pub flags: c_uint,
69+
pub next: Option<
70+
extern "C" fn(*mut *mut git_config_backend_entry, *mut git_config_iterator) -> c_int,
71+
>,
72+
pub free: Option<extern "C" fn(*mut git_config_iterator)>,
73+
}
74+
75+
#[repr(C)]
76+
pub struct git_config_backend {
77+
pub version: c_uint,
78+
pub readonly: c_int,
79+
pub cfg: *mut git_config,
80+
pub open: Option<
81+
extern "C" fn(*mut git_config_backend, git_config_level_t, *const git_repository) -> c_int,
82+
>,
83+
pub get: Option<
84+
extern "C" fn(
85+
*mut git_config_backend,
86+
*const c_char,
87+
*mut *mut git_config_backend_entry,
88+
) -> c_int,
89+
>,
90+
pub set: Option<extern "C" fn(*mut git_config_backend, *const c_char, *const c_char) -> c_int>,
91+
pub set_multivar: Option<
92+
extern "C" fn(
93+
*mut git_config_backend,
94+
*const c_char,
95+
*const c_char,
96+
*const c_char,
97+
) -> c_int,
98+
>,
99+
pub del: Option<extern "C" fn(*mut git_config_backend, *const c_char) -> c_int>,
100+
pub del_multivar:
101+
Option<extern "C" fn(*mut git_config_backend, *const c_char, *const c_char) -> c_int>,
102+
pub snapshot:
103+
Option<extern "C" fn(*mut *mut git_config_backend, *mut git_config_backend) -> c_int>,
104+
pub lock: Option<extern "C" fn(*mut git_config_backend) -> c_int>,
105+
pub unlock: Option<extern "C" fn(*mut git_config_backend) -> c_int>,
106+
pub free: Option<extern "C" fn(*mut git_config_backend)>,
107+
}
108+
109+
pub const GIT_CONFIG_BACKEND_VERSION: c_uint = 1;
110+
111+
#[repr(C)]
112+
pub struct git_config_backend_memory_options {
113+
pub version: c_uint,
114+
pub backend_type: *const c_char,
115+
pub origin_path: *const c_char
116+
}
117+
118+
pub const GIT_CONFIG_BACKEND_MEMORY_OPTIONS_VERSION: c_uint = 1;
119+
59120
pub enum git_index {}
60121
pub enum git_index_conflict_iterator {}
61122
pub enum git_object {}
@@ -98,7 +159,7 @@ pub struct git_odb_stream {
98159
pub read: Option<extern "C" fn(*mut git_odb_stream, *mut c_char, size_t) -> c_int>,
99160
pub write: Option<extern "C" fn(*mut git_odb_stream, *const c_char, size_t) -> c_int>,
100161
pub finalize_write: Option<extern "C" fn(*mut git_odb_stream, *const git_oid) -> c_int>,
101-
pub free: Option<extern "C" fn(*mut git_odb_stream)>
162+
pub free: Option<extern "C" fn(*mut git_odb_stream)>,
102163
}
103164

104165
git_enum! {
@@ -3161,13 +3222,32 @@ extern "C" {
31613222
) -> c_int;
31623223

31633224
// config
3225+
pub fn git_config_add_backend(
3226+
cfg: *mut git_config,
3227+
file: *mut git_config_backend,
3228+
level: git_config_level_t,
3229+
repo: *const git_repository,
3230+
force: c_int,
3231+
) -> c_int;
31643232
pub fn git_config_add_file_ondisk(
31653233
cfg: *mut git_config,
31663234
path: *const c_char,
31673235
level: git_config_level_t,
31683236
repo: *const git_repository,
31693237
force: c_int,
31703238
) -> c_int;
3239+
pub fn git_config_backend_backend_from_string(
3240+
out: *mut *mut git_config_backend,
3241+
cfg: *const c_char,
3242+
len: size_t,
3243+
opts: *mut git_config_backend_memory_options,
3244+
) -> c_int;
3245+
pub fn git_config_backend_backend_from_values(
3246+
out: *mut *mut git_config_backend,
3247+
values: *mut *const c_char,
3248+
len: size_t,
3249+
opts: *mut git_config_backend_memory_options,
3250+
) -> c_int;
31713251
pub fn git_config_delete_entry(cfg: *mut git_config, name: *const c_char) -> c_int;
31723252
pub fn git_config_delete_multivar(
31733253
cfg: *mut git_config,
@@ -3214,6 +3294,7 @@ extern "C" {
32143294
cfg: *const git_config,
32153295
name: *const c_char,
32163296
) -> c_int;
3297+
pub fn git_config_init_backend(backend: *mut git_config_backend, version: c_uint) -> c_int;
32173298
pub fn git_config_iterator_free(iter: *mut git_config_iterator);
32183299
pub fn git_config_iterator_glob_new(
32193300
out: *mut *mut git_config_iterator,

0 commit comments

Comments
 (0)