Conversion between different character encodings. More...
#include "config.h"#include <errno.h>#include <iconv.h>#include <stdbool.h>#include <stdio.h>#include <string.h>#include "mutt/lib.h"#include "email/lib.h"#include "lib.h"Go to the source code of this file.
Functions | |
| size_t | mutt_convert_file_to (FILE *fp, const char *fromcode, struct Slist const *const tocodes, int *tocode, struct Content *info) |
| Change the encoding of a file. | |
| size_t | mutt_convert_file_from_to (FILE *fp, const struct Slist *fromcodes, const struct Slist *tocodes, char **fromcode, char **tocode, struct Content *info) |
| Convert a file between encodings. | |
Conversion between different character encodings.
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 convert.c.
| size_t mutt_convert_file_to | ( | FILE * | fp, |
| const char * | fromcode, | ||
| struct Slist const *const | tocodes, | ||
| int * | tocode, | ||
| struct Content * | info ) |
Change the encoding of a file.
| [in] | fp | File to convert |
| [in] | fromcode | Original encoding |
| [in] | tocodes | List of target encodings |
| [out] | tocode | Chosen encoding |
| [out] | info | Encoding information |
| -1 | Error, no conversion was possible |
| >0 | Success, number of bytes converted |
Find the best charset conversion of the file from fromcode into one of the tocodes. If successful, set *tocode and Content *info and return the number of characters converted inexactly.
We convert via UTF-8 in order to avoid the condition -1(EINVAL), which would otherwise prevent us from knowing the number of inexact conversions. Where the candidate target charset is UTF-8 we avoid doing the second conversion because iconv_open("UTF-8", "UTF-8") fails with some libraries.
We assume that the output from iconv is never more than 4 times as long as the input for any pair of charsets we might be interested in.
Definition at line 64 of file convert.c.
| size_t mutt_convert_file_from_to | ( | FILE * | fp, |
| const struct Slist * | fromcodes, | ||
| const struct Slist * | tocodes, | ||
| char ** | fromcode, | ||
| char ** | tocode, | ||
| struct Content * | info ) |
Convert a file between encodings.
| [in] | fp | File to read from |
| [in] | fromcodes | Charsets to try converting FROM |
| [in] | tocodes | Charsets to try converting TO |
| [out] | fromcode | From charset selected |
| [out] | tocode | To charset selected |
| [out] | info | Info about the file |
| num | Characters converted |
| ICONV_ILLEGAL_SEQ | Error (as a size_t) |
Find the first of the fromcodes that gives a valid conversion and the best charset conversion of the file into one of the tocodes. If successful, set *fromcode and *tocode to dynamically allocated strings, set Content *info, and return the number of characters converted inexactly. If no conversion was possible, return -1.
Definition at line 216 of file convert.c.