mirror of
https://github.com/reactos/reactos.git
synced 2024-11-01 04:11:30 +00:00
92 lines
1.9 KiB
C
92 lines
1.9 KiB
C
/*
|
|
* ReactOS log2lines
|
|
* Written by Jan Roeloffzen
|
|
*
|
|
* - Custom match routines
|
|
*/
|
|
|
|
#include <string.h>
|
|
|
|
#include "config.h"
|
|
#include "log2lines.h"
|
|
#include "match.h"
|
|
|
|
// break pattern: show source+line
|
|
static int match_break(FILE *outFile, char *Line, int processed)
|
|
{
|
|
static int state = 0;
|
|
|
|
if ( processed ) return processed;
|
|
switch (state)
|
|
{
|
|
case 1:
|
|
state = 0;
|
|
break;
|
|
default:
|
|
state = 0;
|
|
}
|
|
return 1;
|
|
}
|
|
// "mod" command: update relocated addresses
|
|
static int match_mod(FILE *outFile, char *Line, int processed)
|
|
{
|
|
static int state = 0;
|
|
char Image[NAMESIZE];
|
|
UINT Base;
|
|
UINT Size;
|
|
PLIST_MEMBER plm;
|
|
|
|
int cnt;
|
|
|
|
if ( processed ) return processed;
|
|
if ( (cnt = sscanf(Line," Base Size %5s", Image)) == 1 )
|
|
{
|
|
l2l_dbg(1, "Module relocate list:\n");
|
|
state = 1;
|
|
return 0;
|
|
}
|
|
switch (state)
|
|
{
|
|
case 1:
|
|
if ( (cnt = sscanf(Line,"%x %x %20s", &Base, &Size, Image)) == 3 )
|
|
{
|
|
if (( plm = entry_lookup(&cache, Image) ))
|
|
{
|
|
plm->RelBase = Base;
|
|
plm->Size = Size;
|
|
l2l_dbg(1, "Relocated: %s %p -> %p\n", Image, (void*)plm->ImageBase, (void*)plm->RelBase);
|
|
}
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
state = 0;
|
|
}
|
|
break;
|
|
default:
|
|
state = 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
int match_line(FILE *outFile, char *Line)
|
|
{
|
|
int processed = 1;
|
|
|
|
if ( *Line == '\n' || *Line == '\0' )
|
|
return 1;
|
|
if ( strncmp(Line, KDBG_CONT, sizeof(KDBG_CONT)-1 ) == 0 )
|
|
return 1;
|
|
|
|
processed = match_mod(outFile, Line, processed);
|
|
processed = match_break(outFile, Line, processed);
|
|
/* more to be appended here:
|
|
* processed = match_xxx(outFile, Line, processed );
|
|
* ...
|
|
*/
|
|
|
|
return (int)(Line[0]);
|
|
}
|
|
|
|
/* EOF */
|