projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
(close_active_file) Remove unnecessary test.
[pspp]
/
src
/
error.c
diff --git
a/src/error.c
b/src/error.c
index 1065fbd7ed93e7f20aa4216bf1fa16d5cea75809..571e6393340640107bb6773fd7a7f8bd79f1883d 100644
(file)
--- a/
src/error.c
+++ b/
src/error.c
@@
-14,8
+14,8
@@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
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., 5
9 Temple Place - Suite 330
, Boston, MA
- 0211
1-1307
, USA. */
+ Foundation, Inc., 5
1 Franklin Street, Fifth Floor
, Boston, MA
+ 0211
0-1301
, USA. */
#include <config.h>
#include "error.h"
#include <config.h>
#include "error.h"
@@
-26,6
+26,8
@@
#include "alloc.h"
#include "command.h"
#include "getline.h"
#include "alloc.h"
#include "command.h"
#include "getline.h"
+#include "glob.h"
+#include "lexer.h"
#include "main.h"
#include "output.h"
#include "settings.h"
#include "main.h"
#include "output.h"
#include "settings.h"
@@
-51,27
+53,16
@@
static int nfile_loc, mfile_loc;
void
tmsg (int class, const char *title, const char *format, ...)
{
void
tmsg (int class, const char *title, const char *format, ...)
{
- char buf[1024];
-
- /* Format the message into BUF. */
- {
- va_list args;
+ struct error e;
+ va_list args;
- va_start (args, format);
- vsnprintf (buf, 1024, format, args);
- va_end (args);
- }
-
- /* Output the message. */
- {
- struct error e;
+ e.class = class;
+ err_location (&e.where);
+ e.title = title;
- e.class = class;
- err_location (&e.where);
- e.title = title;
- e.text = buf;
- err_vmsg (&e);
- }
+ va_start (args, format);
+ err_vmsg (&e, format, args);
+ va_end (args);
}
/* Writes error message in CLASS, with text FORMAT, formatted with
}
/* Writes error message in CLASS, with text FORMAT, formatted with
@@
-79,31
+70,16
@@
tmsg (int class, const char *title, const char *format, ...)
void
msg (int class, const char *format, ...)
{
void
msg (int class, const char *format, ...)
{
- struct string buf;
-
- ds_init (NULL, &buf, 1024);
-
- /* Format the message into BUF. */
- {
- va_list args;
-
- va_start (args, format);
- ds_vprintf (&buf, format, args);
- va_end (args);
- }
-
- /* Output the message. */
- {
- struct error e;
+ struct error e;
+ va_list args;
- e.class = class;
- err_location (&e.where);
- e.title = NULL;
- e.text = buf.string;
- err_vmsg (&e);
- }
+ e.class = class;
+ err_location (&e.where);
+ e.title = NULL;
- ds_destroy (&buf);
+ va_start (args, format);
+ err_vmsg (&e, format, args);
+ va_end (args);
}
/* Terminate due to fatal error in input. */
}
/* Terminate due to fatal error in input. */
@@
-223,9
+199,15
@@
err_hcf (int success)
{
terminating = 1;
{
terminating = 1;
+ lex_done();
getl_uninitialize ();
getl_uninitialize ();
+ free(file_loc);
+ file_loc = NULL;
+ nfile_loc = mfile_loc = 0;
+
outp_done ();
outp_done ();
+ done_glob();
exit (success ? EXIT_SUCCESS : EXIT_FAILURE);
}
exit (success ? EXIT_SUCCESS : EXIT_FAILURE);
}
@@
-235,7
+217,7
@@
static void dump_message (char *errbuf, unsigned indent,
void (*func) (const char *), unsigned width);
void
void (*func) (const char *), unsigned width);
void
-err_vmsg (const struct error *e)
+err_vmsg (const struct error *e
, const char *format, va_list args
)
{
/* Class flags. */
enum
{
/* Class flags. */
enum
@@
-281,15
+263,15
@@
err_vmsg (const struct error *e)
class &= ERR_CLASS_MASK;
assert (class >= 0 && class < ERR_CLASS_COUNT);
class &= ERR_CLASS_MASK;
assert (class >= 0 && class < ERR_CLASS_COUNT);
- assert (
e->tex
t != NULL);
+ assert (
forma
t != NULL);
- ds_init (
NULL,
&msg, 64);
+ ds_init (&msg, 64);
if (e->where.filename && (error_classes[class].flags & ERR_WITH_FILE))
{
ds_printf (&msg, "%s:", e->where.filename);
if (e->where.line_number != -1)
ds_printf (&msg, "%d:", e->where.line_number);
if (e->where.filename && (error_classes[class].flags & ERR_WITH_FILE))
{
ds_printf (&msg, "%s:", e->where.filename);
if (e->where.line_number != -1)
ds_printf (&msg, "%d:", e->where.line_number);
- ds_putc
har
(&msg, ' ');
+ ds_putc (&msg, ' ');
}
ds_printf (&msg, "%s: ", gettext (error_classes[class].banner));
}
ds_printf (&msg, "%s: ", gettext (error_classes[class].banner));
@@
-304,9
+286,9
@@
err_vmsg (const struct error *e)
ds_printf (&msg, "%s: ", cur_proc);
if (e->title)
ds_printf (&msg, "%s: ", cur_proc);
if (e->title)
- ds_
concat
(&msg, e->title);
+ ds_
puts
(&msg, e->title);
- ds_
concat (&msg, e->text
);
+ ds_
vprintf (&msg, format, args
);
/* FIXME: Check set_messages and set_errors to determine where to
send errors and messages.
/* FIXME: Check set_messages and set_errors to determine where to
send errors and messages.
@@
-314,7
+296,7
@@
err_vmsg (const struct error *e)
Please note that this is not trivial. We have to avoid an
infinite loop in reporting errors that originate in the output
section. */
Please note that this is not trivial. We have to avoid an
infinite loop in reporting errors that originate in the output
section. */
- dump_message (ds_
value
(&msg), 8, puts_stdout, get_viewwidth());
+ dump_message (ds_
c_str
(&msg), 8, puts_stdout, get_viewwidth());
ds_destroy (&msg);
ds_destroy (&msg);
@@
-500,11
+482,6
@@
dump_message (char *msg, unsigned indent, void (*func) (const char *),
memset (buf, ' ', indent);
memcpy (&buf[indent], cp, cp2 - cp);
memset (buf, ' ', indent);
memcpy (&buf[indent], cp, cp2 - cp);
- if ( hard_break)
- {
- buf[indent + idx + cp2 - cp] = '\n';
- ++idx;
- }
buf[indent + idx + cp2 - cp] = '\0';
func (buf);
cp = cp2;
buf[indent + idx + cp2 - cp] = '\0';
func (buf);
cp = cp2;
@@
-535,7
+512,9
@@
request_bug_report_and_abort(const char *msg )
"default_config_path: %s\n"
"include_path: %s\n"
"groff_font_path: %s\n"
"default_config_path: %s\n"
"include_path: %s\n"
"groff_font_path: %s\n"
- "locale_dir: %s\n",
+ "locale_dir: %s\n"
+ "compiler version: %s\n"
+ ,
bare_version,
version,
bare_version,
version,
@@
-545,7
+524,13
@@
request_bug_report_and_abort(const char *msg )
default_config_path,
include_path,
groff_font_path,
default_config_path,
include_path,
groff_font_path,
- locale_dir);
+ locale_dir,
+#ifdef __VERSION__
+ __VERSION__
+#else
+ "Unknown"
+#endif
+ );
if ( msg )
fprintf(stderr,"Diagnosis: %s\n",msg);
if ( msg )
fprintf(stderr,"Diagnosis: %s\n",msg);
@@
-559,7
+544,7
@@
request_bug_report_and_abort(const char *msg )
void
err_assert_fail(const char *expr, const char *file, int line)
{
void
err_assert_fail(const char *expr, const char *file, int line)
{
- c
onst c
har msg[256];
+ char msg[256];
snprintf(msg,256,"Assertion failed: %s:%d; (%s)",file,line,expr);
request_bug_report_and_abort( msg );
}
snprintf(msg,256,"Assertion failed: %s:%d; (%s)",file,line,expr);
request_bug_report_and_abort( msg );
}