diff options
Diffstat (limited to 'src/fluent-bit/lib/onigmo/win32/makedef.py')
-rwxr-xr-x | src/fluent-bit/lib/onigmo/win32/makedef.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/fluent-bit/lib/onigmo/win32/makedef.py b/src/fluent-bit/lib/onigmo/win32/makedef.py new file mode 100755 index 000000000..38e8db494 --- /dev/null +++ b/src/fluent-bit/lib/onigmo/win32/makedef.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python + +from __future__ import print_function +import re + +header_files = ( + "onigmo.h", "regenc.h", + "onigmognu.h", "onigmoposix.h" +) + +exclude_symbols = [ + "OnigEncodingKOI8", + + # USE_UPPER_CASE_TABLE + "OnigEncAsciiToUpperCaseTable", + "OnigEncISO_8859_1_ToUpperCaseTable", +] + +features = { + "USE_VARIABLE_META_CHARS": ("onig_set_meta_char",), + "USE_CAPTURE_HISTORY": ("onig_get_capture_tree",) +} + +for v in features.values(): + exclude_symbols += list(v) + +# Check if the features are enabled +with open("regint.h", "r") as f: + e = set() + for line in f: + for k, v in features.items(): + if re.match(r"^#define\s+" + k + r"\b", line): + e |= set(v) + exclude_symbols = list(set(exclude_symbols) - e) + +symbols = set() + +rx1 = re.compile("(ONIG_EXTERN.*)$") +rx2 = re.compile(r"(\w+)( +PV?_\(\(.*\)\)|\[.*\])?;\s*(/\*.*\*/)?$") +for filename in header_files: + with open(filename, "r") as f: + for line in f: + m = rx1.match(line) + if not m: + continue + s = m.group(1) + if s[-1] != ';': + s += ' ' + next(f) + m2 = rx2.search(s) + if m2 and (not m2.group(1) in exclude_symbols): + symbols.add(m2.group(1)) + +print('EXPORTS') +for s in sorted(symbols): + print('\t' + s) |