/* Copyright (C) 2007-2011 The Android Open Source Project
**
** This software is licensed under the terms of the GNU General Public
** License version 2, as published by the Free Software Foundation, and
** may be copied, distributed, and modified under those terms.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
*/
#ifndef NDK_CRASH_PARSER_H_
#define NDK_CRASH_PARSER_H_
/*
* Contains declaration of structures and routines that are used to parse ADB
* log output, filtering out and printing references related to the crash dump.
*/
/* Crash parser descriptor. */
typedef struct NdkCrashParser NdkCrashParser;
/* Creates and initializes NdkCrashParser descriptor.
* Param:
* out_handle - Handle to the stream where to print the parser's output.
* Typically, the handle is is stdout.
* sym_root - Path to the root directory where symbols are stored. Note that
* symbol tree starting with that root must match the tree of execuatable
* modules in the device. I.e. symbols for /path/to/module must be located in
* <sym_root>/path/to/module
* Return:
* Pointer to the initialized NdkCrashParser descriptor on success, or NULL on
* failure.
*/
NdkCrashParser* CreateNdkCrashParser(FILE* out_handle, const char* sym_root);
/* Destroys an NdkCrashParser descriptor.
* Param:
* parser - NdkCrashParser descriptor, created and initialized with a call to
* NdkCrashParser routine.
*/
void DestroyNdkCrashParser(NdkCrashParser* parser);
/* Parses a line from the ADB log output.
* Param:
* parser - NdkCrashParser descriptor, created and initialized with a call to
* NdkCrashParser routine.
* line - ADB log output line to parse. The line must be zero-terminated, and
* must not contain \r, or \n in it.
* Return:
* 0 If the line has been part of the crash dump.
* 1 If the line has not been part of the crash dump.
* -1 If there was an error when parsing the line.
*
*/
int ParseLine(NdkCrashParser* parser, const char* line);
#endif // NDK_CRASH_PARSER_H_