#include <stdlib.h>
#include "alloc.h"
#include "command.h"
-#include "getline.h"
+#include "getl.h"
#include "glob.h"
#include "lexer.h"
#include "main.h"
#include "output.h"
+#include "progname.h"
#include "settings.h"
#include "str.h"
#include "var.h"
#include "version.h"
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
int err_error_count;
int err_warning_count;
fflush (stdout);
fflush (stderr);
- fprintf (stderr, "%s: %s\n", pgmname,
+ fprintf (stderr, "%s: %s\n", program_name,
_("Terminating NOW due to a fatal error!"));
- err_hcf (0);
+ terminate (false);
}
/* Terminate unless we're interactive or will go interactive when the
else
mfile_loc *= 2;
- file_loc = xrealloc (file_loc, mfile_loc * sizeof *file_loc);
+ file_loc = xnrealloc (file_loc, mfile_loc, sizeof *file_loc);
}
file_loc[nfile_loc++] = f;
#define EXIT_FAILURE 1
#endif
-static int terminating;
+static void puts_stdout (const char *s);
+static void dump_message (char *errbuf, unsigned indent,
+ void (*func) (const char *), unsigned width);
-/* Halt-catch-fire. SUCCESS should be nonzero if exiting successfully
- or zero if not. Despite the name, this is the usual way to finish,
- successfully or not. */
void
-err_hcf (int success)
+err_done (void)
{
- terminating = 1;
-
- lex_done();
- getl_uninitialize ();
-
- free(file_loc);
- outp_done ();
- done_glob();
-
-
- exit (success ? EXIT_SUCCESS : EXIT_FAILURE);
+ free (file_loc);
+ file_loc = NULL;
+ nfile_loc = mfile_loc = 0;
}
-static void puts_stdout (const char *s);
-static void dump_message (char *errbuf, unsigned indent,
- void (*func) (const char *), unsigned width);
-
void
err_vmsg (const struct error *e, const char *format, va_list args)
{
ds_destroy (&msg);
- if (e->class == FE && !terminating)
- err_hcf (0);
+ if (e->class == FE)
+ terminate (0);
}
\f
/* Private functions. */
"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,
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);