Handling of international domain names. More...
#include "config.h"#include <stdint.h>#include <stdio.h>#include "mutt/lib.h"#include "config/lib.h"#include "core/lib.h"#include "idna2.h"#include <stdbool.h>#include <string.h>#include <idn2.h>
Include dependency graph for idna.c:Go to the source code of this file.
Macros | |
| #define | IDN2_SKIP_LIBIDN_COMPAT |
Functions | |
| static bool | check_idn (char *domain) |
| Is domain in Punycode? | |
| int | mutt_idna_to_ascii_lz (const char *input, char **output, uint8_t flags) |
| Convert a domain to Punycode. | |
| char * | mutt_idna_intl_to_local (const char *user, const char *domain, uint8_t flags) |
| Convert an email's domain from Punycode. | |
| char * | mutt_idna_local_to_intl (const char *user, const char *domain) |
| Convert an email's domain to Punycode. | |
| const char * | mutt_idna_print_version (void) |
| Create an IDN version string. | |
Handling of international domain names.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
Definition in file idna.c.
|
static |
Is domain in Punycode?
| domain | Domain to test |
| true | At least one part of domain is in Punycode |
Definition at line 61 of file idna.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int mutt_idna_to_ascii_lz | ( | const char * | input, |
| char ** | output, | ||
| uint8_t | flags ) |
Convert a domain to Punycode.
| [in] | input | Domain |
| [out] | output | Result |
| [in] | flags | Flags, e.g. IDNA_ALLOW_UNASSIGNED |
| 0 | Success |
| >0 | Failure, error code |
Convert a domain from the current locale to Punycode.
Definition at line 90 of file idna.c.
Here is the caller graph for this function:| char * mutt_idna_intl_to_local | ( | const char * | user, |
| const char * | domain, | ||
| uint8_t | flags ) |
Convert an email's domain from Punycode.
| user | Username |
| domain | Domain |
| flags | Flags, e.g. MI_MAY_BE_IRREVERSIBLE |
| ptr | Newly allocated local email address |
| NULL | Error in conversion |
If $idn_decode is set, then the domain will be converted from Punycode. For example, "xn--ls8h.la" becomes the emoji domain: ":poop:.la" Then the user and domain are changed from 'utf-8' to the encoding in $charset.
If the flag MI_MAY_BE_IRREVERSIBLE is NOT given, then the results will be checked to make sure that the transformation is "undo-able".
Definition at line 117 of file idna.c.
Here is the call graph for this function:
Here is the caller graph for this function:| char * mutt_idna_local_to_intl | ( | const char * | user, |
| const char * | domain ) |
Convert an email's domain to Punycode.
| user | Username |
| domain | Domain |
| ptr | Newly allocated Punycode email address |
| NULL | Error in conversion |
The user and domain are assumed to be encoded according to $charset. They are converted to 'utf-8'. If $idn_encode is set, then the domain will be converted to Punycode. For example, the emoji domain: ":poop:.la" becomes "xn--ls8h.la"
Definition at line 227 of file idna.c.
Here is the call graph for this function:
Here is the caller graph for this function:| const char * mutt_idna_print_version | ( | void | ) |
Create an IDN version string.
| ptr | Version string |
Definition at line 272 of file idna.c.
Here is the caller graph for this function: