Mercurial > hg
annotate setup_mpatch_cffi.py @ 30306:5581b294f3c6
help: show help for disabled extensions (issue5228)
This patch does not exactly solve issue5228 but it results in a better
condition on this issue. For disabled extensions, we used to parse the
module and get the first occurrences of docstring and then return the first
line of that as an introductory heading of extension. This is what we get
today.
This patch returns the whole docstring of the module as a help for extension,
which is more informative. There are some modules which don't have much
docstring at top level except the heading so those are unaffected by this
change. To follow the existing trend of showing commands either we have to
load the extension or have a very ugly parsing method which don't even assure
correctness.
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Sun, 06 Nov 2016 06:54:31 +0530 |
parents | 90af59b40d8a |
children |
rev | line source |
---|---|
29871
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
1 from __future__ import absolute_import |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
2 |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
3 import cffi |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
4 import os |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
5 |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
6 ffi = cffi.FFI() |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
7 mpatch_c = os.path.join(os.path.join(os.path.dirname(__file__), 'mercurial', |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
8 'mpatch.c')) |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
9 ffi.set_source("_mpatch_cffi", open(mpatch_c).read(), |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
10 include_dirs=["mercurial"]) |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
11 ffi.cdef(""" |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
12 |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
13 struct mpatch_frag { |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
14 int start, end, len; |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
15 const char *data; |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
16 }; |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
17 |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
18 struct mpatch_flist { |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
19 struct mpatch_frag *base, *head, *tail; |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
20 }; |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
21 |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
22 extern "Python" struct mpatch_flist* cffi_get_next_item(void*, ssize_t); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
23 |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
24 int mpatch_decode(const char *bin, ssize_t len, struct mpatch_flist** res); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
25 ssize_t mpatch_calcsize(size_t len, struct mpatch_flist *l); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
26 void mpatch_lfree(struct mpatch_flist *a); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
27 static int mpatch_apply(char *buf, const char *orig, size_t len, |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
28 struct mpatch_flist *l); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
29 struct mpatch_flist *mpatch_fold(void *bins, |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
30 struct mpatch_flist* (*get_next_item)(void*, ssize_t), |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
31 ssize_t start, ssize_t end); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
32 """) |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
33 |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
34 if __name__ == '__main__': |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
35 ffi.compile() |