Skip to content

Commit a07e479

Browse files
committed
Apply comment log changes to all lines
Signed-off-by: Cervenka Dusan <[email protected]>
1 parent 04dee1a commit a07e479

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

dissect/cstruct/cstruct.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ def __repr__(self):
8888
return '<Structure {name} +compiled>'
8989
"""
9090

91+
COMMENT_REGEX_START =r'(\n?[ ]*\/\/[^\n]*\n)*[ ]*(?P<commentBlock>/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)?[ \t\r\n]*'
92+
COMMENT_REGEX_END =r'[ ]*(?P<commentBlockAfter>\/\*(\*(?!\/)|[^*])*\*\/)?(\n?[ ]*\/\/[^\n]*\n*)*'
93+
9194

9295
class Error(Exception):
9396
pass
@@ -333,7 +336,7 @@ def _constants(self, data):
333336

334337
def _enums(self, data):
335338
r = re.finditer(
336-
r'(?P<commentBlock>\/\*(\*(?!\/)|[^*])*\*\/)?[ \t\r\n]*enum\s+(?P<name>[^\s:{]+)\s*(:\s*(?P<type>[^\s]+)\s*)?\{(?P<values>[^}]+)\}\s*;',
339+
COMMENT_REGEX_START+r'enum\s+(?P<name>[^\s:{]+)\s*(:\s*(?P<type>[^\s]+)\s*)?\{(?P<values>[^}]+)\}\s*;'+COMMENT_REGEX_END,
337340
data,
338341
)
339342
for t in r:
@@ -356,7 +359,7 @@ def _parse_fields_enums(self, s):
356359
values = {}
357360
valuesDetails = {}
358361
fields = re.finditer(
359-
r'(\n?[ ]*\/\/[^\n]*\n)*[ ]*(?P<commentBlock>\/\/[^\n]*$|\/(?!\\)\*[\s\S]*?\*(?!\\)\/)?[ \t\r\n]*(?P<value>[ ]*[a-zA-z][^\n,\/]*),?[ ]*(?P<commentBlockAfter>\/\*(\*(?!\/)|[^*])*\*\/)?(\n?[ ]*\/\/[^\n]*\n*)*',
362+
COMMENT_REGEX_START+r'(?P<value>[a-zA-z][^\n,/]*),?'+COMMENT_REGEX_END,
360363
s,
361364
)
362365

@@ -383,7 +386,7 @@ def _parse_fields_enums(self, s):
383386
def _structs(self, data):
384387
compiler = Compiler(self.cstruct)
385388
r = re.finditer(
386-
r'(?P<commentBlock>\/\*(\*(?!\/)|[^*])*\*\/)?[ \t\r\n]*(#(?P<flags>(?:compile))\s+)?((?P<typedef>typedef)\s+)?(?P<type>[^\s]+)\s+(__attribute__\(\([^)]+\)\)\s*)?(?P<name>[^\s]+)?(?P<fields>\s*\{(\s*//[^\n]*|/\*[^*]*\*/|[^}])+\}(?P<defs>\s+[^;\n]+)?)?\s*;',
389+
COMMENT_REGEX_START+r'(#(?P<flags>(?:compile))\s+)?((?P<typedef>typedef)\s+)?(?P<type>[^\s]+)\s+(__attribute__\(\([^)]+\)\)\s*)?(?P<name>[^\s]+)?(?P<fields>\s*\{(\s*//[^\n]*|/\*[^*]*\*/|[^}])+\}(?P<defs>\s+[^;\n]+)?)?\s*;'+COMMENT_REGEX_END,
387390
data,
388391
)
389392
for t in r:
@@ -417,7 +420,7 @@ def _structs(self, data):
417420

418421
def _parse_fields_struct(self, s):
419422
fields = re.finditer(
420-
r'(\n?[ ]*\/\/[^\n]*\n)*[ ]*(?P<commentBlock>\/\*(\*(?!\/)|[^*])*\*\/)?[ \t\r\n]*(?P<type>[^\s]+)\s+(?P<name>[^\s\[:]+)(\s*:\s*(?P<bits>\d+))?(\[(?P<count>[^;\n]*)\])?;[ ]*(?P<commentBlockAfter>\/\*(\*(?!\/)|[^*])*\*\/)?(\n?[ ]*\/\/[^\n]*\n*)*',
423+
COMMENT_REGEX_START+r'(?P<type>[^\s]+)\s+(?P<name>[^\s\[:]+)(\s*:\s*(?P<bits>\d+))?(\[(?P<count>[^;\n]*)\])?;'+COMMENT_REGEX_END,
421424
s,
422425
)
423426
r = []

0 commit comments

Comments
 (0)