diff options
author | Reiko Asakura | 2021-03-03 22:21:18 -0500 |
---|---|---|
committer | Reiko Asakura | 2021-03-03 22:21:18 -0500 |
commit | 067a0ce1a72f220ee91ddd29a47a70f9abddc5a2 (patch) | |
tree | d7cd347de0839d3d4a7df7c20a7c61a72a13681d /scripts/nids-check-digest.py | |
parent | Add SceNpWebApi internal functions (diff) | |
download | vds-libraries-067a0ce1a72f220ee91ddd29a47a70f9abddc5a2.tar.gz |
Refactor lint scripts
Diffstat (limited to 'scripts/nids-check-digest.py')
-rw-r--r-- | scripts/nids-check-digest.py | 52 |
1 files changed, 19 insertions, 33 deletions
diff --git a/scripts/nids-check-digest.py b/scripts/nids-check-digest.py index 47a71d2..b386bb3 100644 --- a/scripts/nids-check-digest.py +++ b/scripts/nids-check-digest.py @@ -6,47 +6,33 @@ # Vita Development Suite Libraries # -import sys from hashlib import sha1 from pathlib import Path -from yaml import load -try: - from yaml import CLoader as Loader -except ImportError: - from yaml import SafeLoader as Loader +import nids def name2nid(n, s): digest = sha1((n + s).encode('utf-8')).digest() return int.from_bytes(digest[:4], byteorder='little') -def print_ex_expect(exports, suffix): - for name, nid in exports.items(): - computed_nid = name2nid(name, suffix) +def module_cb(ud, modname, module): + ud[0] = modname + +def library_cb(ud, libname, library): + for suffix in ['', ud[0], libname]: + if library['nid'] == name2nid(libname, suffix): + print(f'{libname} [{suffix}]') + ud[1] = suffix + return + ud[1] = None + +def export_cb(ud, kind, name, nid): + if ud[1] is not None: + computed_nid = name2nid(name, ud[1]) if nid != computed_nid: print(f' {nid:08X} ≠ {computed_nid:08X} {name}') -def print_lib_expect(libname, lib, suffix): - if lib['nid'] == name2nid(libname, suffix): - print(f'{libname} [{suffix}]') - if 'functions' in lib: - print_ex_expect(lib['functions'], suffix) - if 'variables' in lib: - print_ex_expect(lib['variables'], suffix) - return 1 - return 0 - -def check_digest(d): - for c in d.iterdir(): - if c.is_file(): - for modname, mod in load(c.read_bytes(), Loader=Loader)['modules'].items(): - for libname, lib in mod['libraries'].items(): - if not print_lib_expect(libname, lib, ''): - if not print_lib_expect(libname, lib, libname): - print_lib_expect(libname, lib, modname) - elif c.is_dir(): - check_digest(c) - else: - sys.exit("Unexpected file type") - -check_digest(Path('nids')) +def check_digest(f): + nids.process(f, module_cb=module_cb, library_cb=library_cb, export_cb=export_cb, user_data=[None, None]) + +nids.iterdir('nids', check_digest) |