Line data Source code
1 : /* strerror-punycode.c --- Convert punycode errors into text.
2 : Copyright (C) 2004-2020 Simon Josefsson
3 :
4 : This file is part of GNU Libidn.
5 :
6 : GNU Libidn is free software: you can redistribute it and/or
7 : modify it under the terms of either:
8 :
9 : * the GNU Lesser General Public License as published by the Free
10 : Software Foundation; either version 3 of the License, or (at
11 : your option) any later version.
12 :
13 : or
14 :
15 : * the GNU General Public License as published by the Free
16 : Software Foundation; either version 2 of the License, or (at
17 : your option) any later version.
18 :
19 : or both in parallel, as here.
20 :
21 : GNU Libidn is distributed in the hope that it will be useful,
22 : but WITHOUT ANY WARRANTY; without even the implied warranty of
23 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24 : General Public License for more details.
25 :
26 : You should have received copies of the GNU General Public License and
27 : the GNU Lesser General Public License along with this program. If
28 : not, see <http://www.gnu.org/licenses/>. */
29 :
30 : #ifdef HAVE_CONFIG_H
31 : # include "config.h"
32 : #endif
33 :
34 : #include "punycode.h"
35 :
36 : #include "gettext.h"
37 : #define _(String) dgettext (PACKAGE, String)
38 :
39 : /**
40 : * punycode_strerror:
41 : * @rc: an #Punycode_status return code.
42 : *
43 : * Convert a return code integer to a text string. This string can be
44 : * used to output a diagnostic message to the user.
45 : *
46 : * PUNYCODE_SUCCESS: Successful operation. This value is guaranteed
47 : * to always be zero, the remaining ones are only guaranteed to hold
48 : * non-zero values, for logical comparison purposes.
49 : * PUNYCODE_BAD_INPUT: Input is invalid.
50 : * PUNYCODE_BIG_OUTPUT: Output would exceed the space provided.
51 : * PUNYCODE_OVERFLOW: Input needs wider integers to process.
52 : *
53 : * Return value: Returns a pointer to a statically allocated string
54 : * containing a description of the error with the return code @rc.
55 : **/
56 : const char *
57 8 : punycode_strerror (Punycode_status rc)
58 : {
59 : const char *p;
60 :
61 8 : bindtextdomain (PACKAGE, LOCALEDIR);
62 :
63 8 : switch (rc)
64 : {
65 2 : case PUNYCODE_SUCCESS:
66 2 : p = _("Success");
67 2 : break;
68 :
69 1 : case PUNYCODE_BAD_INPUT:
70 1 : p = _("Invalid input");
71 1 : break;
72 :
73 1 : case PUNYCODE_BIG_OUTPUT:
74 1 : p = _("Output would exceed the buffer space provided");
75 1 : break;
76 :
77 1 : case PUNYCODE_OVERFLOW:
78 1 : p = _("String size limit exceeded");
79 1 : break;
80 :
81 3 : default:
82 3 : p = _("Unknown error");
83 3 : break;
84 : }
85 :
86 8 : return p;
87 : }
|