add function name to traceback info

MPW fixes
This commit is contained in:
Guido van Rossum 1994-08-29 12:09:58 +00:00
parent d2002c79f0
commit 13836d9e6d
1 changed files with 15 additions and 15 deletions

View File

@ -1,5 +1,5 @@
/*********************************************************** /***********************************************************
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum, Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
Amsterdam, The Netherlands. Amsterdam, The Netherlands.
All Rights Reserved All Rights Reserved
@ -74,9 +74,9 @@ static typeobject Tracebacktype = {
"traceback", "traceback",
sizeof(tracebackobject), sizeof(tracebackobject),
0, 0,
tb_dealloc, /*tp_dealloc*/ (destructor)tb_dealloc, /*tp_dealloc*/
0, /*tp_print*/ 0, /*tp_print*/
tb_getattr, /*tp_getattr*/ (getattrfunc)tb_getattr, /*tp_getattr*/
0, /*tp_setattr*/ 0, /*tp_setattr*/
0, /*tp_compare*/ 0, /*tp_compare*/
0, /*tp_repr*/ 0, /*tp_repr*/
@ -150,14 +150,22 @@ tb_store(v)
} }
static void static void
tb_displayline(f, filename, lineno) tb_displayline(f, filename, lineno, name)
object *f; object *f;
char *filename; char *filename;
int lineno; int lineno;
char *name;
{ {
FILE *xfp; FILE *xfp;
char linebuf[1000]; char linebuf[1000];
int i; int i;
#ifdef MPW
/* This is needed by MPW's File and Line commands */
#define FMT " File \"%.900s\"; line %d # in %s\n"
#else
/* This is needed by Emacs' compile command */
#define FMT " File \"%.900s\", line %d, in %s\n"
#endif
xfp = fopen(filename, "r"); xfp = fopen(filename, "r");
if (xfp == NULL) { if (xfp == NULL) {
/* Search tail of filename in sys.path before giving up */ /* Search tail of filename in sys.path before giving up */
@ -189,16 +197,7 @@ tb_displayline(f, filename, lineno)
} }
} }
} }
sprintf(linebuf, " File \"%.900s\"%s line %d\n", sprintf(linebuf, FMT, filename, lineno, name);
filename,
#ifdef applec /* MPW */
/* This is needed by MPW's File and Line commands */
";",
#else
/* This is needed by Emacs' compile command */
",",
#endif
lineno);
writestring(linebuf, f); writestring(linebuf, f);
if (xfp == NULL) if (xfp == NULL)
return; return;
@ -234,7 +233,8 @@ tb_printinternal(tb, f, limit)
if (depth <= limit) if (depth <= limit)
tb_displayline(f, tb_displayline(f,
getstringvalue(tb->tb_frame->f_code->co_filename), getstringvalue(tb->tb_frame->f_code->co_filename),
tb->tb_lineno); tb->tb_lineno,
getstringvalue(tb->tb_frame->f_code->co_name));
depth--; depth--;
tb = tb->tb_next; tb = tb->tb_next;
} }