Move xstrtol messages into gnulib domain, when --pobase is used.
[gnulib.git] / lib / xstrtol-error.c
1 /* A more useful interface to strtol.
2
3    Copyright (C) 1995, 1996, 1998, 1999, 2001, 2002, 2003, 2004, 2006, 2007
4    Free Software Foundation, Inc.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2, or (at your option)
9    any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software Foundation,
18    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
19
20 #include <config.h>
21 #include "xstrtol.h"
22
23 #include "error.h"
24 #include "gettext.h"
25
26 #define _(str) gettext (str)
27
28 /* Report an error for an out-of-range integer argument.
29    EXIT_CODE is the exit code (0 for a non-fatal error).
30    OPTION is the option that takes the argument
31     (usually starting with one or two minus signs).
32    ARG is the option's argument.
33    ERR is the error code returned by one of the xstrto* functions.  */
34 void
35 xstrtol_error (int exit_code, char const *option, char const *arg,
36                strtol_error err)
37 {
38   switch (err)
39     {
40     default:
41       abort ();
42
43     case LONGINT_INVALID:
44       error (exit_code, 0, _("invalid %s argument `%s'"),
45              option, arg);
46       break;
47
48     case LONGINT_INVALID_SUFFIX_CHAR:
49     case LONGINT_INVALID_SUFFIX_CHAR | LONGINT_OVERFLOW:
50       error (exit_code, 0, _("invalid suffix in %s argument `%s'"),
51              option, arg);
52       break;
53
54     case LONGINT_OVERFLOW:
55       error (exit_code, 0, _("%s argument `%s' too large"),
56              option, arg);
57       break;
58     }
59 }