diff options
author | Stan Shebs <shebs@apple.com> | 1999-04-16 01:35:26 +0000 |
---|---|---|
committer | Stan Shebs <shebs@apple.com> | 1999-04-16 01:35:26 +0000 |
commit | 14cd51f7793a9ce07bc435069f57269450141363 (patch) | |
tree | 280a2da48f771d61be5b451ddbacdf9ef8e9ad13 /gdb/debugify.c | |
download | gdb-14cd51f7793a9ce07bc435069f57269450141363.tar.gz |
Initial revision
Diffstat (limited to 'gdb/debugify.c')
-rw-r--r-- | gdb/debugify.c | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/gdb/debugify.c b/gdb/debugify.c new file mode 100644 index 00000000000..841b5891394 --- /dev/null +++ b/gdb/debugify.c @@ -0,0 +1,109 @@ + +/* Debug macros for developemnt. + Copyright 1997 + Free Software Foundation, Inc. + +This file is part of GDB. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +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. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#define DEBUGIFY +#include "debugify.h" +#include "config.h" + +#include <stdio.h> +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif +#ifdef HAVE_STRING_H +#include <string.h> +#else +#include <strings.h> +#endif + +#define REDIRECT + +static FILE *fout = NULL; +static char fname[128]; +static int file_cnt = 0; /* count number of open files */ + +void +puts_dbg (data) + const char *data; +{ + FILE *fdbg; + + fdbg = fopen ("dbg.log", "a+"); + if (fdbg == NULL) + return; + fprintf (fdbg, data); + fclose (fdbg); +} + +/* Can't easily get the message back to gdb... write to a log instead. */ +void +fputs_dbg (data, fakestream) + const char *data; + FILE *fakestream; +{ +#ifdef REDIRECT + puts_dbg (data); +#else /* REDIRECT */ + + if (fakestream == stdout || fakestream == stderr || fakestream == NULL) + { + if (fout == NULL) + { + for (file_cnt = 0; file_cnt < 20; file_cnt++) + { + sprintf (fname, "dbg%d.log", file_cnt); + if ((fout = fopen (fname), "r") != NULL) + fclose (fout); + else + break; + } + fout = fopen (fname, "w"); + if (fout == NULL) + return; + } + fakestream = fout; + } + fprintf (fakestream, data); + fflush (fakestream); +#endif /* REDIRECT */ +} + +void +#ifdef ANSI_PROTOTYPES +printf_dbg (const char *format,...) +#else +printf_dbg (va_alist) + va_dcl +#endif +{ + va_list args; + char buf[256]; +#ifdef ANSI_PROTOTYPES + va_start (args, format); +#else + char *format; + + va_start (args); + format = va_arg (args, char *); +#endif + vsprintf (buf, format, args); + puts_dbg (buf); + va_end (args); +} |