+2009-01-13 Rodrigo Kumpera <rkumpera@novell.com>
+
+ * gen-md-tests.c: Rename pe-header to pe-signature.
+ Add support for decimal literals using a '0' prefix.
+ Add proper pe-header variable.
+
2009-01-12 Rodrigo Kumpera <rkumpera@novell.com>
* header-tests.md: Add tests for pe header.
comment ::= '#.*<eol>
identifier ::= ([a-z] | [A-Z]) ([a-z] | [A-Z] | [0-9] | [_-.])*
hexa_digit = [0-9] | [a-f] | [A-F]
- number ::= (+-)?('0' [xX])? hexa_digit+
+ number ::= hexadecimal | decimal
+ hexadecimal ::= (+-)?('0' [xX])? hexa_digit+
+ decimal ::= 0 [0-9]+
eol ::= <eol>
punctuation ::= [{}]
number | variable:
variable:
- file-size
- pe-header
+ file-size |
+ pe-header |
+ pe-signature
TODO For the sake of a simple implementation, tokens are space delimited.
*/
{
if (!strcmp ("file-size", name))
return entry->data_size;
- if (!strcmp ("pe-header", name))
+ if (!strcmp ("pe-signature", name))
return READ_VAR (guint32, entry->data + 0x3c);
+ if (!strcmp ("pe-header", name))
+ return READ_VAR (guint32, entry->data + 0x3c) + 4;
printf ("Unknown variable in expression %s\n", name);
exit (INVALID_VARIABLE_NAME);
if (!ok)
*res = text [1];
} else {
- *res = strtol (text, &end, 16);
+ if (text [0] == '0' && text [1] != 'x')
+ *res = strtol (text, &end, 10);
+ else
+ *res = strtol (text, &end, 16);
ok = *end;
}
free (text);