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 : }