* Now handles function pointers as arguments correctly.
* Added optional tracing output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28377 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -13,6 +13,14 @@
|
|||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
|
|
||||||
|
//#define TRACE_GCC2_DEMANGLER
|
||||||
|
#ifdef TRACE_GCC2_DEMANGLER
|
||||||
|
# define TRACE(x...) kprintf(x)
|
||||||
|
#else
|
||||||
|
# define TRACE(x...) ;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
TYPE_FUNCTION,
|
TYPE_FUNCTION,
|
||||||
TYPE_METHOD,
|
TYPE_METHOD,
|
||||||
@@ -22,8 +30,15 @@ enum {
|
|||||||
static void
|
static void
|
||||||
ignore_qualifiers(const char** _arg)
|
ignore_qualifiers(const char** _arg)
|
||||||
{
|
{
|
||||||
while (isupper(**_arg))
|
while (isupper(**_arg)) {
|
||||||
|
if (**_arg == 'F') {
|
||||||
|
// skip function declaration
|
||||||
|
while (**_arg && **_arg != '_')
|
||||||
|
(*_arg)++;
|
||||||
|
}
|
||||||
|
|
||||||
(*_arg)++;
|
(*_arg)++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -333,6 +348,8 @@ get_next_argument_internal(uint32* _cookie, const char* symbol, char* name,
|
|||||||
if (arg == NULL)
|
if (arg == NULL)
|
||||||
return B_ENTRY_NOT_FOUND;
|
return B_ENTRY_NOT_FOUND;
|
||||||
|
|
||||||
|
TRACE("\n\targ %ld: %s\n", current, arg);
|
||||||
|
|
||||||
if (arg[0] == 'T') {
|
if (arg[0] == 'T') {
|
||||||
// duplicate argument
|
// duplicate argument
|
||||||
if (repeating)
|
if (repeating)
|
||||||
|
|||||||
Reference in New Issue
Block a user