summaryrefslogtreecommitdiff
path: root/error.c
diff options
context:
space:
mode:
authorJari Aalto <jari.aalto@cante.net>2004-07-27 13:29:18 +0000
committerJari Aalto <jari.aalto@cante.net>2009-09-12 16:46:56 +0000
commitb80f6443b6b7b620c7272664c66ecb0b120a0998 (patch)
tree9f71c98d8fe8fa0f41d95e1eb4227f32a09d43ca /error.c
parent7117c2d221b2aed4ede8600f6a36b7c1454b4f55 (diff)
downloadbash-b80f6443b6b7b620c7272664c66ecb0b120a0998.tar.gz
Imported from ../bash-3.0.tar.gz.
Diffstat (limited to 'error.c')
-rw-r--r--error.c78
1 files changed, 48 insertions, 30 deletions
diff --git a/error.c b/error.c
index 837a3e2b..edb0e2e9 100644
--- a/error.c
+++ b/error.c
@@ -1,5 +1,5 @@
/* error.c -- Functions for handling errors. */
-/* Copyright (C) 1993 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2003 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -40,11 +40,10 @@ extern int errno;
#endif /* !errno */
#include "bashansi.h"
+#include "bashintl.h"
+
+#include "shell.h"
#include "flags.h"
-#include "error.h"
-#include "command.h"
-#include "general.h"
-#include "externs.h"
#include "input.h"
#if defined (HISTORY)
@@ -61,6 +60,10 @@ extern pid_t shell_pgrp;
extern int give_terminal_to __P((pid_t, int));
#endif /* JOB_CONTROL */
+#if defined (ARRAY_VARS)
+extern char *bash_badsub_errmsg;
+#endif
+
static void error_prolog __P((int));
/* The current maintainer of the shell. You change this in the
@@ -71,20 +74,22 @@ static void error_prolog __P((int));
char *the_current_maintainer = MAINTAINER;
+int gnu_error_format = 0;
+
static void
error_prolog (print_lineno)
int print_lineno;
{
+ char *ename;
int line;
- fprintf (stderr, "%s: ", get_name_for_error ());
+ ename = get_name_for_error ();
+ line = (print_lineno && interactive_shell == 0) ? executing_line_number () : -1;
- if (print_lineno && interactive_shell == 0)
- {
- line = executing_line_number ();
- if (line > 0)
- fprintf (stderr, "line %d: ", line);
- }
+ if (line > 0)
+ fprintf (stderr, "%s:%s%d: ", ename, gnu_error_format ? "" : " line ", line);
+ else
+ fprintf (stderr, "%s: ", ename);
}
/* Return the name of the shell or the shell script for error reporting. */
@@ -92,10 +97,23 @@ char *
get_name_for_error ()
{
char *name;
+#if defined (ARRAY_VARS)
+ SHELL_VAR *bash_source_v;
+ ARRAY *bash_source_a;
+#endif
name = (char *)NULL;
if (interactive_shell == 0)
- name = dollar_vars[0];
+ {
+#if defined (ARRAY_VARS)
+ bash_source_v = find_variable ("BASH_SOURCE");
+ if (bash_source_v && array_p (bash_source_v) &&
+ (bash_source_a = array_cell (bash_source_v)))
+ name = array_reference (bash_source_a, 0);
+ if (name == 0)
+#endif
+ name = dollar_vars[0];
+ }
if (name == 0 && shell_name && *shell_name)
name = base_pathname (shell_name);
if (name == 0)
@@ -144,7 +162,7 @@ programming_error (format, va_alist)
if (remember_on_history)
{
h = last_history_line ();
- fprintf (stderr, "last command: %s\n", h ? h : "(null)");
+ fprintf (stderr, _("last command: %s\n"), h ? h : "(null)");
}
#endif
@@ -152,7 +170,7 @@ programming_error (format, va_alist)
fprintf (stderr, "Report this to %s\n", the_current_maintainer);
#endif
- fprintf (stderr, "Stopping myself...");
+ fprintf (stderr, _("Aborting..."));
fflush (stderr);
abort ();
@@ -182,7 +200,7 @@ report_error (format, va_alist)
va_end (args);
if (exit_immediately_on_error)
- sh_exit (1);
+ exit_shell (1);
}
void
@@ -239,7 +257,7 @@ internal_warning (format, va_alist)
{
va_list args;
- fprintf (stderr, "%s: warning: ", get_name_for_error ());
+ fprintf (stderr, _("%s: warning: "), get_name_for_error ());
SH_VA_START (args, format);
@@ -299,11 +317,11 @@ parser_error (lineno, format, va_alist)
if (interactive)
fprintf (stderr, "%s: ", ename);
else if (interactive_shell)
- fprintf (stderr, "%s: %s: line %d: ", ename, iname, lineno);
+ fprintf (stderr, "%s: %s:%s%d: ", ename, iname, gnu_error_format ? "" : " line ", lineno);
else if (STREQ (ename, iname))
- fprintf (stderr, "%s: line %d: ", ename, lineno);
+ fprintf (stderr, "%s:%s%d: ", ename, gnu_error_format ? "" : " line ", lineno);
else
- fprintf (stderr, "%s: %s: line %d: ", ename, iname, lineno);
+ fprintf (stderr, "%s: %s:%s%d: ", ename, iname, gnu_error_format ? "" : " line ", lineno);
SH_VA_START (args, format);
@@ -313,7 +331,7 @@ parser_error (lineno, format, va_alist)
va_end (args);
if (exit_immediately_on_error)
- sh_exit (2);
+ exit_shell (2);
}
#ifdef DEBUG
@@ -384,10 +402,10 @@ trace (format, va_alist)
static char *cmd_error_table[] = {
- "unknown command error", /* CMDERR_DEFAULT */
- "bad command type", /* CMDERR_BADTYPE */
- "bad connector", /* CMDERR_BADCONN */
- "bad jump", /* CMDERR_BADJUMP */
+ N_("unknown command error"), /* CMDERR_DEFAULT */
+ N_("bad command type"), /* CMDERR_BADTYPE */
+ N_("bad connector"), /* CMDERR_BADCONN */
+ N_("bad jump"), /* CMDERR_BADJUMP */
0
};
@@ -399,7 +417,7 @@ command_error (func, code, e, flags)
if (code > CMDERR_LAST)
code = CMDERR_DEFAULT;
- programming_error ("%s: %s: %d", func, cmd_error_table[code], e);
+ programming_error ("%s: %s: %d", func, _(cmd_error_table[code]), e);
}
char *
@@ -409,7 +427,7 @@ command_errstr (code)
if (code > CMDERR_LAST)
code = CMDERR_DEFAULT;
- return (cmd_error_table[code]);
+ return (_(cmd_error_table[code]));
}
#ifdef ARRAY_VARS
@@ -417,7 +435,7 @@ void
err_badarraysub (s)
const char *s;
{
- report_error ("%s: bad array subscript", s);
+ report_error ("%s: %s", s, _(bash_badsub_errmsg));
}
#endif
@@ -425,12 +443,12 @@ void
err_unboundvar (s)
const char *s;
{
- report_error ("%s: unbound variable", s);
+ report_error (_("%s: unbound variable"), s);
}
void
err_readonly (s)
const char *s;
{
- report_error ("%s: readonly variable", s);
+ report_error (_("%s: readonly variable"), s);
}