in scripts/elf_ubuntu_dependency_analyzer.py [0:0]
def analyze_path(path, grand_summary, grand_special_cases, grand_missing_libraries):
"""
Analyze a file or directory for ELF binaries and their dependencies.
Args:
path (str): Path to the file or directory to analyze.
grand_summary (dict): Dictionary to store all package information.
grand_special_cases (list): List to store all special cases.
grand_missing_libraries (dict): Dictionary to store all missing libraries.
"""
if os.path.isfile(path):
if is_elf_binary(path):
packages, special_cases, missing_libraries = process_binary(path)
for package_name, full_package_name in packages:
grand_summary[package_name].add(full_package_name)
grand_special_cases.extend((case, path) for case in special_cases)
for lib in missing_libraries:
grand_missing_libraries[lib].add(path)
elif os.path.isdir(path):
for root, dirs, files in os.walk(path):
for file in files:
file_path = os.path.join(root, file)
if is_elf_binary(file_path):
packages, special_cases, missing_libraries = process_binary(file_path)
for package_name, full_package_name in packages:
grand_summary[package_name].add(full_package_name)
grand_special_cases.extend((case, file_path) for case in special_cases)
for lib in missing_libraries:
grand_missing_libraries[lib].add(file_path)
else:
print(f"Error: {path} is neither a valid file nor a directory.")