From 71ebe01a55a356050db3b9a53253ea846219b68e Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 30 Nov 2023 11:02:41 -0300 Subject: [PATCH] DTKAnalyzer: Convert to metadata --- biostools/__main__.py | 2 +- biostools/analyzers.py | 26 ++++++++------------------ 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/biostools/__main__.py b/biostools/__main__.py index 17aed84..a199f1b 100644 --- a/biostools/__main__.py +++ b/biostools/__main__.py @@ -573,7 +573,7 @@ def analyze_process(queue, formatter, scan_base, options): analyzers.CompaqAnalyzer(), analyzers.CopamAnalyzer(), analyzers.CorebootAnalyzer(), - analyzers.DTKGoldStarAnalyzer(), + analyzers.DTKAnalyzer(), analyzers.GeneralSoftwareAnalyzer(), analyzers.IBMSurePathAnalyzer(), analyzers.IBMAnalyzer(), diff --git a/biostools/analyzers.py b/biostools/analyzers.py index e0507f8..47c1121 100644 --- a/biostools/analyzers.py +++ b/biostools/analyzers.py @@ -1622,12 +1622,12 @@ class CorebootAnalyzer(Analyzer): return False -class DTKGoldStarAnalyzer(Analyzer): +class DTKAnalyzer(Analyzer): def __init__(self, *args, **kwargs): - super().__init__('DTKGoldStar', *args, **kwargs) + super().__init__('DTK', *args, **kwargs) self._dtk_pattern = re.compile(b'''Datatech Enterprises Co\\., Ltd\\.|DATATECH ENTERPRISES CO\\., LTD\\.|\\x0ADTK Corp\\.|\\(C\\) Copyright by GoldStar Co\\.,Ltd\\.|GOLDSTAR SYSTEM SETUP''') - self._version_pattern = re.compile(b'''(?:(DTK|GoldStar) ([\\x20-\\x7E]+) BIOS Ver(?:sion)? |(DTK)/([^/]+)/BIOS )([^\s]+)(?: ([^\s]+))?''') + self._version_pattern = re.compile(b'''(?:(?:DTK|GoldStar) [\\x20-\\x7E]+ BIOS Ver(?:sion)? |(?:DTK)/[\\x21-\\x2E\\x30-\\x7E]+/BIOS )([\\x21-\\x7E]+)(?: [\\x20-\\x7E]+)?''') def reset(self): super().reset() @@ -1640,23 +1640,13 @@ class DTKGoldStarAnalyzer(Analyzer): # Locate version string. match = self._version_pattern.search(file_data) if match: - self.debug_print('DTK version:', match.group(0)) - - # Extract vendor. - self.vendor = (match.group(1) or match.group(3) or b'GoldStar').decode('cp437', 'ignore') + # Extract version string as metadata. + dtk_ver = match.group(0) + self.debug_print('DTK version:', dtk_ver) + self.metadata.append(('ID', dtk_ver.decode('cp437', 'ignore'))) # Extract version. - self.version = match.group(5).decode('cp437', 'ignore') - - # Extract string. - self.string = (match.group(2) or match.group(4) or b'').decode('cp437', 'ignore') - if self.string[-4:] == ' ROM': - self.string = self.string[:-4] - - # Add revision to string. - revision = (match.group(6) or b'').decode('cp437', 'ignore') - if revision and revision != '(C)': - self.string += '\n' + revision + self.version = match.group(1).decode('cp437', 'ignore') return True