From 398dd1c01fe5e1b63cb8b39b88ab461acbc9c129 Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Mon, 22 Jul 2002 17:39:42 +0000 Subject: [PATCH] Make the BACKTRACE rule accept an optional 'levels' parameter. [SVN r14563] --- historic/jam/src/builtins.c | 7 +++++-- jam_src/builtins.c | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/historic/jam/src/builtins.c b/historic/jam/src/builtins.c index 38ff798f9..2fb6472a6 100644 --- a/historic/jam/src/builtins.c +++ b/historic/jam/src/builtins.c @@ -178,7 +178,7 @@ load_builtins() } { - char * args[] = { 0 }; + char * args[] = { "levels", "?", 0 }; bind_builtin( "BACKTRACE" , builtin_backtrace, 0, args ); } @@ -600,8 +600,11 @@ void backtrace( FRAME *frame ) */ LIST *builtin_backtrace( PARSE *parse, FRAME *frame ) { + LIST* levels_arg = lol_get( frame->args, 0 ); + int levels = levels_arg ? atoi( levels_arg->string ) : ((unsigned int)(-1) >> 1) ; + LIST* result = L0; - while ( frame = frame->prev ) + for(; (frame = frame->prev) && levels ; --levels ) { char* file; int line; diff --git a/jam_src/builtins.c b/jam_src/builtins.c index 38ff798f9..2fb6472a6 100644 --- a/jam_src/builtins.c +++ b/jam_src/builtins.c @@ -178,7 +178,7 @@ load_builtins() } { - char * args[] = { 0 }; + char * args[] = { "levels", "?", 0 }; bind_builtin( "BACKTRACE" , builtin_backtrace, 0, args ); } @@ -600,8 +600,11 @@ void backtrace( FRAME *frame ) */ LIST *builtin_backtrace( PARSE *parse, FRAME *frame ) { + LIST* levels_arg = lol_get( frame->args, 0 ); + int levels = levels_arg ? atoi( levels_arg->string ) : ((unsigned int)(-1) >> 1) ; + LIST* result = L0; - while ( frame = frame->prev ) + for(; (frame = frame->prev) && levels ; --levels ) { char* file; int line;