diff options
author | tkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-29 20:01:45 +0000 |
---|---|---|
committer | tkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-29 20:01:45 +0000 |
commit | 5a037dbd1fa96857356ea9450dbb279236a4ccbd (patch) | |
tree | 05a77906359d7bd336aba3bd8c097b7414e1f63a /libgfortran/runtime/error.c | |
parent | 4047f0ad54131fd8873b84689a613687398056c6 (diff) | |
download | gcc-5a037dbd1fa96857356ea9450dbb279236a4ccbd.tar.gz |
2007-07-29 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/32858
PR libfortran/30814
* configure.ac: Added checks for presence of stdio.h and
stdarg.h. Test presence of vsnprintf().
* configure: Regenerated.
* config.h.in: Regenerated.
* libgfortran.h: Include <stdio.h>. Add printf attribute to
prototype of runtime_error. Remove prototype for st_sprintf.
Add prototype for st_vprintf.
* runtime/main.c (store_exec_path): Replace st_sprintf by sprintf.
* runtime/error.c (st_sprintf): Remove.
(runtime_error): Rewrite as a variadic function. Call
st_vprintf().
* intrinsics/pack_generic.c: Output extents of LHS and RHS for
bounds error.
* io/open.c (new_unit): Replace st_sprintf by sprintf.
* io/list_read.c (convert_integer): Likewise.
(parse_repeat): Likewise.
(read_logical): Likewise.
(read_character): Likewise.
(parse_real): Likewise.
(read_real): Likewise.
(check_type): Likewise.
(nml_parse_qualifyer): Likewise.
(nml_read_obj): Likewise.
(nml_get_ojb_data): Likewise.
* io/unix.c (init_error_stream): Remove.
(tempfile): Replace st_sprintf by sprintf.
(st_vprintf): New function.
(st_printf): Rewrite to call st_vprintf.
* io/transfer.c (require_type): Replace st_sprintf by sprintf.
* io/format.c (format_error): Likewise.
* io/write.c (nml_write_obj): Likewise.
2007-07-29 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/32858
PR libfortran/30814
* gfortran.dg/pack_bounds_1.f90: Adjust to new error message.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127049 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran/runtime/error.c')
-rw-r--r-- | libgfortran/runtime/error.c | 67 |
1 files changed, 8 insertions, 59 deletions
diff --git a/libgfortran/runtime/error.c b/libgfortran/runtime/error.c index 959a44b97d1..4dda2277dcc 100644 --- a/libgfortran/runtime/error.c +++ b/libgfortran/runtime/error.c @@ -185,63 +185,6 @@ xtoa (GFC_UINTEGER_LARGEST n, char *buffer, size_t len) return p; } - -/* st_sprintf()-- Simple sprintf() for formatting memory buffers. */ - -void -st_sprintf (char *buffer, const char *format, ...) -{ - va_list arg; - char c; - const char *p; - int count; - char itoa_buf[GFC_ITOA_BUF_SIZE]; - - va_start (arg, format); - - for (;;) - { - c = *format++; - if (c != '%') - { - *buffer++ = c; - if (c == '\0') - break; - continue; - } - - c = *format++; - switch (c) - { - case 'c': - *buffer++ = (char) va_arg (arg, int); - break; - - case 'd': - p = gfc_itoa (va_arg (arg, int), itoa_buf, sizeof (itoa_buf)); - count = strlen (p); - - memcpy (buffer, p, count); - buffer += count; - break; - - case 's': - p = va_arg (arg, char *); - count = strlen (p); - - memcpy (buffer, p, count); - buffer += count; - break; - - default: - *buffer++ = c; - } - } - - va_end (arg); -} - - /* show_locus()-- Print a line number and filename describing where * something went wrong */ @@ -306,10 +249,16 @@ iexport(os_error); * invalid fortran program. */ void -runtime_error (const char *message) +runtime_error (const char *message, ...) { + va_list ap; + recursion_check (); - st_printf ("Fortran runtime error: %s\n", message); + st_printf ("Fortran runtime error: "); + va_start (ap, message); + st_vprintf (message, ap); + va_end (ap); + st_printf ("\n"); sys_exit (2); } iexport(runtime_error); |