mpatchbuild.py
40 lines
| 1.0 KiB
| text/x-python
|
PythonLexer
Matt Harbison
|
r52756 | from __future__ import annotations | ||
Yuya Nishihara
|
r32505 | import cffi | ||
import os | ||||
ffi = cffi.FFI() | ||||
Augie Fackler
|
r43346 | mpatch_c = os.path.join( | ||
Manuel Jacob
|
r44085 | os.path.join(os.path.dirname(__file__), '..', 'mpatch.c') | ||
Augie Fackler
|
r43346 | ) | ||
Augie Fackler
|
r36966 | with open(mpatch_c) as f: | ||
Augie Fackler
|
r43346 | ffi.set_source( | ||
Manuel Jacob
|
r44085 | "mercurial.cffi._mpatch", f.read(), include_dirs=["mercurial"] | ||
Augie Fackler
|
r43346 | ) | ||
ffi.cdef( | ||||
""" | ||||
Yuya Nishihara
|
r32505 | |||
struct mpatch_frag { | ||||
int start, end, len; | ||||
const char *data; | ||||
}; | ||||
struct mpatch_flist { | ||||
struct mpatch_frag *base, *head, *tail; | ||||
}; | ||||
extern "Python" struct mpatch_flist* cffi_get_next_item(void*, ssize_t); | ||||
int mpatch_decode(const char *bin, ssize_t len, struct mpatch_flist** res); | ||||
ssize_t mpatch_calcsize(size_t len, struct mpatch_flist *l); | ||||
void mpatch_lfree(struct mpatch_flist *a); | ||||
static int mpatch_apply(char *buf, const char *orig, size_t len, | ||||
struct mpatch_flist *l); | ||||
struct mpatch_flist *mpatch_fold(void *bins, | ||||
struct mpatch_flist* (*get_next_item)(void*, ssize_t), | ||||
ssize_t start, ssize_t end); | ||||
Augie Fackler
|
r43346 | """ | ||
) | ||||
Yuya Nishihara
|
r32505 | |||
if __name__ == '__main__': | ||||
ffi.compile() | ||||