diff options
author | Jari Aalto <jari.aalto@cante.net> | 2004-07-27 13:29:18 +0000 |
---|---|---|
committer | Jari Aalto <jari.aalto@cante.net> | 2009-09-12 16:46:56 +0000 |
commit | b80f6443b6b7b620c7272664c66ecb0b120a0998 (patch) | |
tree | 9f71c98d8fe8fa0f41d95e1eb4227f32a09d43ca /error.c | |
parent | 7117c2d221b2aed4ede8600f6a36b7c1454b4f55 (diff) | |
download | bash-b80f6443b6b7b620c7272664c66ecb0b120a0998.tar.gz |
Imported from ../bash-3.0.tar.gz.
Diffstat (limited to 'error.c')
-rw-r--r-- | error.c | 78 |
1 files changed, 48 insertions, 30 deletions
@@ -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); } |